如何基于简单的numpy数组指定Conv2d输入形状

时间:2019-06-27 12:23:48

标签: python numpy keras neural-network conv-neural-network

我的网络有一个小问题,我的数据形状如下:

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层,您能帮我吗?

0 个答案:

没有答案