类型错误:__init__() 缺少 1 个必需的位置参数:“单位”

Posted

技术标签:

【中文标题】类型错误:__init__() 缺少 1 个必需的位置参数:“单位”【英文标题】:TypeError: __init__() missing 1 required positional argument: 'units' 【发布时间】:2022-01-11 05:30:29 【问题描述】:

我正在使用 python 和张量流,但我错过了“units”参数,我不知道如何解决它,看起来你的帖子主要是代码;请添加更多详细信息。看起来您的帖子主要是代码;请添加更多详细信息。

这里是代码

def createModel():
    model = Sequential()
    # first set of CONV => RELU => MAX POOL layers
    model.add(Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=inputShape))
    model.add(Conv2D(32, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25)) 
    model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    model.add(Flatten())
    model.add(Dense(512, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(output_dim=NUM_CLASSES, activation='softmax'))
    # returns our fully constructed deep learning + Keras image classifier 
    opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)
    # use binary_crossentropy if there are two classes
    model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"])
    return model

print("Reshaping trainX at..."+ str(datetime.now()))
#print(trainX.sample()) 
print(type(trainX)) # <class 'pandas.core.series.Series'>
print(trainX.shape) # (750,)
from numpy import zeros
Xtrain = np.zeros([trainX.shape[0],HEIGHT, WIDTH, DEPTH])
for i in range(trainX.shape[0]): # 0 to traindf Size -1
    Xtrain[i] = trainX[i]
print(Xtrain.shape) # (750,128,128,3)
print("Reshaped trainX at..."+ str(datetime.now()))

print("Reshaping valX at..."+ str(datetime.now()))
print(type(valX)) # <class 'pandas.core.series.Series'>
print(valX.shape) # (250,)
from numpy import zeros
Xval = np.zeros([valX.shape[0],HEIGHT, WIDTH, DEPTH])
for i in range(valX.shape[0]): # 0 to traindf Size -1
    Xval[i] = valX[i]
print(Xval.shape) # (250,128,128,3)
print("Reshaped valX at..."+ str(datetime.now()))

# initialize the model
print("compiling model...")
sys.stdout.flush()
model = createModel()

# print the summary of model
from keras.utils import print_summary
print_summary(model, line_length=None, positions=None, print_fn=None)

# add some visualization
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
SVG(model_to_dot(model).create(prog='dot', format='svg'))

【问题讨论】:

你能提供一些你写的代码吗?在我们看到一些实际代码之前,这个问题很难回答 我已经写好了代码 文件“/Users/wafaaladawi/.spyder-py3/DR-kaggle.py”,第 265 行,在 createModel model.add(Dense(output_dim=NUM_CLASSES,activation='softmax')) 类型错误: __init__() 缺少 1 个必需的位置参数:'units' 请帮我找到解决办法 【参考方案1】:

尝试更改此行:

model.add(Dense(output_dim=NUM_CLASSES, activation='softmax'))

model.add(Dense(NUM_CLASSES, activation='softmax'))

我没有使用 keras 的经验,但我在 Dense 的文档页面上找不到名为 output_dim 的参数。我认为您打算提供单位,但将其标记为 output_dim

【讨论】:

Yes.Done.Thanks【参考方案2】:

Keras Dense 层文档如下:

keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

使用以下内容:

classifier.add(Dense(6, activation='relu', kernel_initializer='glorot_uniform',input_dim=11))

将在这里工作,单位表示 output_dim,表示我们在隐藏层中需要 6 个神经元。权重用uniform函数初始化,输入层有11个数据集的自变量(input_dim)来馈送上面的隐藏层。

【讨论】:

【参考方案3】:

我认为是版本问题。在 Dense 的 keras 更新版本中,没有“output_dim”参数。

您可以查看 Dense 参数的此文档链接。

https://keras.io/api/layers/core_layers/dense/

tf.keras.layers.Dense(
    units,
    activation=None,
    use_bias=True,
    kernel_initializer="glorot_uniform",
    bias_initializer="zeros",
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    **kwargs
)

所以第一个参数是“单位”,这是强制性的。

代替这一行:

model.add(Dense(output_dim=NUM_CLASSES, activation='softmax'))

使用这个:

model.add(Dense(units=NUM_CLASSES, activation='softmax'))

model.add(Dense(NUM_CLASSES, activation='softmax'))

【讨论】:

以上是关于类型错误:__init__() 缺少 1 个必需的位置参数:“单位”的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到错误:__init__() 缺少 1 个必需的位置参数?

类型错误:initialize() 缺少 1 个必需的位置参数:'url'

如何修复modelformset错误:__init __()缺少1个必需的位置参数:'user'

错误:__ init __()缺少1个必需的位置参数:'rec'

__init__() 缺少 1 个必需的位置参数:'self' [关闭]

类型错误:tf__normalize_img() 缺少 1 个必需的位置参数:'label'