__init__() 缺少 1 个必需的位置参数:CNN 中的 'units'

__init__() missing 1 required positional argument: 'units' in CNN

我正在尝试为 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'

这似乎是什么问题?

看来,这是解决方案,,你传递了错误的参数:

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
)

来自docs 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
)

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