Я пытаюсь обучить CNN векторам слов, сгенерированным с использованием библиотеки gensim.После того как я сгенерировал все свои данные в числовой форме, я пытаюсь передать их в модель CNN, используя Keras, когда я получаю следующую ошибку:
ValueError: Ошибка при проверке ввода: ожидается, что conv2d_1_input будет иметь 4 измерения, но получил массив с формой (20000, 250, 50)
Я искал эту проблему в течение нескольких часов, и все решения, опубликованные для похожих / одинаковых проблем, не смогли решить эту ошибку длямне.Кто-нибудь может увидеть, где я не так с входными размерами?Я сгенерировал некоторые случайные данные, которые воссоздают ошибку:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Convolution2D, Flatten, Dropout
from keras.layers.embeddings import Embedding
from keras.preprocessing import sequence
from keras.callbacks import TensorBoard
t = np.random.rand(20000,250,50)
l = np.random.rand(20000,1)
embedding_vecor_length = 50
net = Sequential()
net.add(Convolution2D(64, 3,input_shape=(1,250,50),
data_format='channels_first'))
# Convolutional model (3x conv, flatten, 2x dense)
net.add(Convolution2D(32,(3), padding='same'))
net.add(Convolution2D(16,(3), padding='same'))
net.add(Convolution2D(8,(3), padding='same'))
net.add(Flatten())
net.add(Dropout(0.2))
net.add(Dense(180,activation='sigmoid'))
net.add(Dropout(0.2))
net.add(Dense(1,activation='sigmoid'))
net.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
tensorBoardCallback = TensorBoard(log_dir='./logs', write_graph=True)
net.summary()
net.fit(t, l, epochs=3, callbacks=[tensorBoardCallback], batch_size=64)