Как упоминалось в ошибке (т. Е. expected ndim=3, found ndim=2
), Conv1D
принимает 3D-массив в качестве входных данных.Поэтому, если вы хотите передать этот массив в него, вам сначала нужно изменить его форму:
X_train = X_train.reshape((X_train.shape[0], X_train.shape[1], 1))
, а также установить соответствующую форму входного слоя:
inputs = Input(X_train.shape[1:])
Однако,Conv1D
обычно используется для обработки последовательностей (например, последовательности слов в предложении) или временных данных (например, временных рядов температуры погоды).И именно поэтому он принимает входные данные в форме (num_samples, num_timesteps or sequence_len, num_features)
.Применение его к представлению tf-idf, у которого нет последовательного порядка, может быть неэффективным.Вместо этого я предлагаю вам использовать слой Dense
.Или же, вместо использования tf-idf, вы можете также подавать необработанные данные (т.е. тексты или предложения) непосредственно в слой Embedding
и использовать слой Conv1D
или LSTM
после него.