Как указать форму ввода Conv2d на основе простого массива - PullRequest
1 голос
/ 27 июня 2019

У меня небольшая проблема с моей сетью. У меня есть данные в форме, подобной:

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 для школьного проекта, ты можешь мне помочь?

...