Я построил модель нейронной сети с 2 входами. Я попытался преобразовать две переменные в категориальные. Когда я запустил программу, я получил следующую ошибку: ValueError: Ошибка при проверке ввода: ожидал, что meta_input будет иметь форму (2,), но получил массив с формой (1109,)
Как найти форму для использования ? ниже часть моей программы:
input_encoder = MultiColumnLabelEncoder()
train_X2=df_train[['var2','var3']]
valid_X2 =df_valid[['var2','var3']]
input_encoder.fit(train_X2)
train_X2=input_encoder.transform(train_X2)
valid_X2=input_encoder.transform(valid_X2)
onehot = OneHotEncoder(sparse=False,categories='auto')
onehot.fit(train_X2)
train _seq=onehot.transform(train_X2)
valid _seq =onehot.transform(valid_X2)
input_text = Input(shape=(200,), dtype='int32', name='input_text')
meta_input = Input(shape=(2,), name='meta_input')
embedding = Embedding(input_dim=len(tokenizer.word_index) + 1,
output_dim=300,
input_length=200)(input_text)
lstm = Bidirectional(LSTM(units=128,
dropout=0.5,
recurrent_dropout=0.5,
return_sequences=True),
merge_mode='concat')(embedding)
pool = GlobalMaxPooling1D()(lstm)
dropout = Dropout(0.5)(pool)
text_output = Dense(n_codes, activation='sigmoid', name='aux_output')(dropout)
output = concatenate([text_output, meta_input])
output = Dense(n_codes, activation='relu')(output)
main_output = Dense(n_codes, activation='softmax', name='main_output')(output)
model = Model(inputs=[input_text,meta_input], outputs=[output])
optimer = Adam(lr=.001)
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
model.summary()
model.fit([X1_train, X2_train], [y_train],
validation_data=([X1_valid,X2_valid], [y_valid]),
batch_size=64, epochs=20, verbose=1)