我正在尝试为 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'
这里似乎有什么问题?
答案 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
)