Извините, не знаю, как задать хороший вопрос в первый раз, поэтому спросите еще раз.
Я создал модель с несколькими входами и выходами. Структура модели показана ниже.
У вас недостаточно репутации для публикации изображения, поэтому в этой ссылке изображение .
inputV = keras.layers.Input(shape=(4096,),name='inputV') #input for visible task
inputH = keras.layers.Input(shape=(4096,),name='inputH') #input for hidden task
hiddenTaskLayer = keras.layers.Dense(14,use_bias=False,activation='sigmoid',name='hiddenTask')
outputV = hiddenTaskLayer(inputV)
outputH = hiddenTaskLayer(inputH)
visibleTaskLayer = keras.layers.Dense(7,use_bias=False,activation='softmax',name='visibleTask')
outputV = visibleTaskLayer(outputV)
outputV = keras.layers.Activation('linear',name='outputV')(outputV)
outputH = keras.layers.Activation('linear',name='outputH')(outputH)
model = keras.models.Model(inputs=[inputH,inputV],outputs=[outputH,outputV])
model.compile(optimizer='sgd',
loss={'outputH': 'msle', 'outputV': 'categorical_crossentropy'},
loss_weights={'outputH': .5, 'outputV': 0.5})
Model: "model_2"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
inputH (InputLayer) [(None, 4096)] 0
__________________________________________________________________________________________________
inputV (InputLayer) [(None, 4096)] 0
__________________________________________________________________________________________________
hiddenTask (Dense) (None, 14) 57344 inputV[0][0]
inputH[0][0]
__________________________________________________________________________________________________
visibleTask (Dense) (None, 7) 98 hiddenTask[0][0]
__________________________________________________________________________________________________
outputH (Activation) (None, 14) 0 hiddenTask[1][0]
__________________________________________________________________________________________________
outputV (Activation) (None, 7) 0 visibleTask[0][0]
==================================================================================================
Total params: 57,442
Trainable params: 57,442
Non-trainable params: 0
__________________________________________________________________________________________________
Однако, когда я попытался приспособить модель
model.fit({'inputH': XforHT, 'inputV': XforVT},
{'outputH': YforHT, 'outputV': YforVT},
epochs=10000, batch_size=100,
shuffle=True,validation_split=0.33,
callbacks=[tensorboard_callback, cp_callback, scheduler_callback])
с предоставленным набором данных,
print(XforHT.shape)
print(YforHT.shape)
print(XforVT.shape)
print(YforVT.shape)
(593, 4096)
(593, 14)
(327, 4096)
(327, 7)
ошибка возникает как:
ValueError: All input arrays (x) should have the same number of samples. Got array shapes: [(593, 4096), (327, 4096)]
Я знаю, что если сократить количество выборок в XforHT до 327, коды будут работать хорошо, но я не хочу этого делать.
У меня есть разное количество выборок для разных входов и выходов, и я Уверен, что у каждого выхода есть одинаковое количество выборок их соответствующих входных данных. Что я могу сделать , не отказываясь от некоторых своих образцов или не ища новые образцы ?