У меня есть два разных входа. Один вход - это 100 матриц размера 200x6000, которые я даю сверточной нейронной сети, а другой состоит из 100 векторов длиной 6000, которые я даю полностью подключенной нейронной сети. Я объединяю эти две сети, за которыми следует полностью подключенная нейронная сеть.
Проблема возникает, когда я явно указываю данные проверки вместо использования validation_split = 0.2. И тогда я получаю следующую ошибку:
Мой вклад в свёрточную нейронную сеть - это image_train измерений (100,1200,6000). Размеры входа в полностью подключенную нейронную сеть составляет (100,6000). А для проверки данные image_valid имеют размерность (30,1200,6000) и размерность position_valid (30,6000).
Размеры Ytest для данных обучения - (100,2), а Yvalid - (30,2)
Мой код выглядит следующим образом:
###Setting up the architecture
###Convolution neural network
i1 = Input(shape=(1, 200, 6000))
c1 = Conv2D(128*2, kernel_size=3,activation='relu',data_format='channels_first')(i1)
c1 = Conv2D(128*2, kernel_size=3, activation='relu')(c1)
c1 = Conv2D(128*2, kernel_size=4, activation='relu')(c1)
c1 = Dropout(0.2)(c1)
#c1 = Conv2D(128*2, kernel_size=4, activation='relu')(c1)
#c1 = Dropout(0.2)(c1)
c1 = Flatten()(c1)
###Fully connected neural network
i2 = Input(shape=(6000, ))
c2 = Dense(64, input_shape = (6000,), activation='relu')(i2)
#c2 = Dense(256, activation='relu', kernel_initializer='normal')(c2)
#c2 = Dense(64, input_shape = (4500,), activation='relu')(i2)
c2 = Dropout(0.2)(c2)
###Concatenating
c = concatenate([c1, c2])
x = Dense(256, activation='relu', kernel_initializer='normal')(c)
x = Dropout(0.25)(x)
output = Dense(2, activation='softmax')(x)
model = Model([i1, i2], [output])
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
history = model.fit([image_train, positions_train], Ytest, batch_size=32,
epochs=20,
verbose=1,
validation_data=([image_valid, positions_valid], Yvalid))
Если бы я использовал validation_split = 0.2, тот же код работал бы. Но я хочу указать validation_data, и когда я это делаю, выдает ошибку, о которой я упоминал выше. Мы будем признательны за понимание.