Я новичок в Keras
и я пытался создать text-classification CNN
модель text-classification CNN
с использованием Python 3.6
когда я столкнулся с этой ошибкой:
Traceback (most recent call last):
File "model.py", line 94, in <module>
model.fit([x1, x2], y_label, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[checkpoint], validation_split=0.2) # starts training
File "/../../anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 955, in fit
batch_size=batch_size)
File "/../../anaconda3/lib/python3.6/site-packages/keras/engine/training.py", line 754, in _standardize_user_data
exception_prefix='input')
File "/../../anaconda3/lib/python3.6/site-packages/keras/engine/training_utils.py", line 90, in standardize_input_data
data = [standardize_single_array(x) for x in data]
File "/../../anaconda3/lib/python3.6/site-packages/keras/engine/training_utils.py", line 90, in <listcomp>
data = [standardize_single_array(x) for x in data]
File "/../../anaconda3/lib/python3.6/site-packages/keras/engine/training_utils.py", line 23, in standardize_single_array
'Got tensor with shape: %s' % str(shape))
ValueError: When feeding symbolic tensors to a model, we expect thetensors to have a static batch size. Got tensor with shape: (None, 50, 100)
Мой код для модели находится здесь:
print("\nCreating Model...")
x1 = Input(shape=(seq_len1, 100), name='x1')
x2 = Input(shape=(seq_len2, 100), name='x2')
x1_r = Reshape((seq_len1, embedding_dim, 1))(x1)
x2_r = Reshape((seq_len2, embedding_dim, 1))(x2)
conv_0 = Conv2D(num_filters, kernel_size=(filter_sizes[0], 1), padding='valid', kernel_initializer='normal', activation='relu')
.
# Conv layers with different filter sizes
.
maxpool = MaxPool2D(pool_size=(2, 1), strides=(1,1), padding='valid')
output1 = conv_0(x1_r)
output1 = maxpool(output1)
output1 = conv_1(output1)
output1 = maxpool(output1)
output1 = conv_2(output1)
output1 = maxpool(output1)
.
# Same for output2
.
concatenated_tensor = Concatenate(axis=1)([output1, output2])
flatten = Flatten()(concatenated_tensor)
.
# Dense layers
.
# this creates a model that includes
model = Model(inputs=[x1, x2], outputs=[output])
.
.
model.fit([x1, x2], y_label, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[checkpoint], validation_split=0.2) # starts training
Я встречаю эту ошибку в строке model.fit
. Здесь seq_len1 = 50 и seq_len2 = 120. Пожалуйста, помогите мне решить эту проблему.
@Vatsal, пожалуйста, ознакомьтесь с функциональным API-интерфейсом для Keras: https://keras.io/getting-started/functional-api-guide/
В вашей команде model.fit
ваши первые аргументы являются переменными Input Layer, это должны быть ваши фактические данные, которые вы пытаетесь поместить. Вы указали свои исходные слои на модель в предпоследней строке.