__init__() 缺少 1 个必需的位置参数:CNN 中的“单位”

时间:2021-03-19 07:01:36

标签: python neural-network conv-neural-network typeerror

我正在尝试为 MNIST 时尚构建一个 CNN,但不确定这里的问题是什么。我收到 thbis 类型错误..

我使用了 Seuqential 网络,但使用了 MAxpooling 和 FLattena dn 密集层。但问题出在 Dense 层

model = Sequential() # type of DNN
model.add(Convolution2D(28, 3, 3, input_shape = (28, 28, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(output_dim = 100, activation="relu"))   ##### 128 nodes in this layer
model.add(Dense(10, activation=tf.nn.softmax))

TypeError                                 Traceback (most recent call last)
<ipython-input-45-90929a8a33e8> in <module>
  3 model.add(MaxPooling2D(pool_size=(2,2)))
  4 model.add(Flatten())
 ----> 5 model.add(Dense(output_dim = 100,kernel_initializer='he_uniform', activation="relu"))   

  6 model.add(Dense(10, activation=tf.nn.softmax))




 TypeError: __init__() missing 1 required positional argument: 'units'

这里似乎有什么问题?

2 个答案:

答案 0 :(得分:3)

Dense 的 docs 函数定义是这样的,

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
)

units 不是可选参数。 您似乎忘记在第一次 Dense 调用时编写单元参数

答案 1 :(得分:1)

看来,这是解决方案,TypeError: __init__() missing 1 required positional argument: "units"',您传递了错误的参数:

model.add(Dense(output_dim = 100, activation="relu"))

代替:

classifier.add(Dense(units = 128, activation='relu'))   
classifier.add(Dense(units = 1, activation='sigmoid'))

我刚刚检查了图书馆,那里有必要的位置参数之类的单位:

    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
)