TypeError: __init__() missing 1 required positional argument: 'units' while coding an neural net

TypeError: __init__() missing 1 required positional argument: 'units' while coding an neural net

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from keras import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.utils import to_categorical
from sklearn.model_selection import train_test_split

df = pd.read_csv("data\heart.csv")

print(df.head())
print(df.info())
print(df.describe())

input = df[[ "Sex" ,str("Age") ,"RestingBP" ,"Cholesterol"]]
output = df[['HeartDisease']]


input_train ,input_test ,output_train ,output_test = 
train_test_split(input,output,test_size=0.2,random_state=9)

print("Number of rows in input_train:", input_train.shape[0])
print("Number of rows in input_test:", input_test.shape[0])
print("Number of rows in output_train", output_train.shape[0])
print("Number of rows in output_test", output_test.shape[0])
pridictor = Sequential()

pridictor.add(Dense(16, activation='relu', input_dim=4))

pridictor.add(Dense(16, activation='relu' ))
pridictor.add(Dense(16, activation='relu' ))
pridictor.add(Dense(2, activation='relu'))

pridictor.compile(Dense(optimizer='adam', loss='categorical_crossentropy',metrics= 
['accuracy']))

为了实现此代码,我得到的错误是 init() 方法缺少 1 个必需的位置参数:'units'。 这个错误来自我代码的最后一行

pridictor.compile(Dense(optimizer='adam', loss='categorical_crossentropy',metrics= 
    ['accuracy']))

问题来自行 pridictor.compile(Dense(optimizer='adam', loss='categorical_crossentropy', metrics= ['accuracy']))

看来您正在尝试错误地编译您的模型。要编译您的模型,您可以执行以下操作:pridictor.compile(optimizer="Adam", loss="categorical_crossentropy", metrics=["accuracy"]).

请注意语法中省略了 Dense,pridictor.compile() 函数需要 optimizerloss 参数,但是您提供了一个 Dense 层作为参数,它是错误的。如果您想了解更多,可以查看文档 here

编译不是一层。它使用优化器功能优化您的网络,在您的情况下是 Adam。 您可以从 pridictor.compile 中删除“密集”,这应该 运行.

是方法和参数,我看答案和你的问题就明白你的意图了,你可能需要对大量的输入记录进行分类。 我向您介绍矩阵,它们可以帮助您确定 pre-accuracy 和 SparseCategoricalCrossentropy 的准确性。 (模型符合)

[样本]:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Model Summary
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
model.compile(optimizer=optimizer, loss=lossfn, metrics=['accuracy', tf.keras.metrics.CategoricalAccuracy()])

[输出]:

1/1 [==============================] - 0s 38ms/step - loss: 4.4276 - accuracy: 0.0500 - categorical_accuracy: 0.4200 - val_loss: 4.4266 - val_accuracy: 0.0500 - val_categorical_accuracy: 0.4200
Epoch 1498/1500
1/1 [==============================] - 0s 35ms/step - loss: 4.4266 - accuracy: 0.0500 - categorical_accuracy: 0.4200 - val_loss: 4.4257 - val_accuracy: 0.0500 - val_categorical_accuracy: 0.4200
Epoch 1499/1500
1/1 [==============================] - 0s 34ms/step - loss: 4.4257 - accuracy: 0.0500 - categorical_accuracy: 0.4200 - val_loss: 4.4251 - val_accuracy: 0.0500 - val_categorical_accuracy: 0.4200
Epoch 1500/1500
1/1 [==============================] - 0s 41ms/step - loss: 4.4251 - accuracy: 0.0500 - categorical_accuracy: 0.4200 - val_loss: 4.4245 - val_accuracy: 0.0500 - val_categorical_accuracy: 0.4200