我的网络有一个小问题,我的数据形状如下:
z = np.array([1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1]).astype(float)
z = np.expand_dims(z, axis=0)
print(type(z))
print(z.dtype)
print(z.shape)
输出:
<class 'numpy.ndarray'>
float64
(1, 14)
我想添加到我的网络转换层,否则,一切正常。
nn = Sequential()
nn.add(Dense(32, input_dim=14, activation='relu'))
nn.add(Dense(64, activation='relu'))
#nn.add(Conv2D(64, (3, 3), activation='relu'))
nn.add(Dense(1, activation='sigmoid'))
nn.compile(loss=keras.losses.binary_crossentropy,
optimizer='rmsprop',
metrics=['accuracy'])
但是当我添加转换层时出现错误:
nn = Sequential()
nn.add(Dense(32, input_dim=14, activation='relu'))
nn.add(Dense(64, activation='relu'))
nn.add(Conv2D(64, (3, 3), activation='relu'))
nn.add(Dense(1, activation='sigmoid'))
nn.compile(loss=keras.losses.binary_crossentropy,
optimizer='rmsprop',
metrics=['accuracy'])
错误:
Traceback (most recent call last): File "/home/administrator/PycharmProjects/BankMarketinData/main.py", line 95, in main() File "/home/administrator/PycharmProjects/BankMarketinData/main.py", line 75, in main bestmodel = nnmodel.best_model() File "/home/administrator/PycharmProjects/BankMarketinData/NNmodel.py", line 25, in best_model nn.add(Conv2D(64, (3, 3), activation='relu')) File "/home/administrator/anaconda3/lib/python3.6/site-packages/keras/engine/sequential.py", line 181, in add output_tensor = layer(self.outputs[0]) File "/home/administrator/anaconda3/lib/python3.6/site-packages/keras/engine/base_layer.py", line 414, in __call__ self.assert_input_compatibility(inputs) File "/home/administrator/anaconda3/lib/python3.6/site-packages/keras/engine/base_layer.py", line 311, in assert_input_compatibility str(K.ndim(x))) ValueError: Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=2
我只需要为学校项目添加一个conv2d层,您能帮我吗?