Список массивов Numpy, которые вы передаете своей модели, не соответствует ожидаемому размеру модели. - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь получить три разные функции потерь в Керасе, передавая их следующим образом:

input_img = Input(shape=(728,))
encoded = Dense(450, activation='relu')(input_img)
encoded = Dense(250, activation='relu')(encoded)
encoded= Dense(20, activation='relu')(encoded)

decoded = Dense(250, activation='relu')(encoded)
decoded = Dense(450, activation='relu')(decoded)
decoded = Dense(728, activation='sigmoid')(decoded)
loss1 = Dense(728, activation='sigmoid', name='p1')(decoded)
loss2 = Dense(728, activation='sigmoid', name='p2')(decoded)
loss3 = Dense(728, activation='sigmoid', name='p3')(decoded)

Я определил три разные функции потерь и успешно скомпилировал

autoencoder = Model(inputs = [input_img], outputs=[loss1,loss2,loss3])
autoencoder.compile(optimizer='Adam', loss = [w_loss,b_loss, loss], metrics = [w_loss,b_loss], loss_weights=[1., 1., 1.])

Затем я подгоняюмодель

history_modified = autoencoder.fit(X_train, X_train, epochs=200, batch_size= 100, shuffle=True, validation_data=(X_test, X_test))

Где размеры X_train (100000, 728) и размеры X_test (50000,728)

Я получаю ошибку

Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 3 array(s), but instead got the following list of 1 arrays: [array([[0., 0., 0., ..., 0., 0., 0.],

Я не знаю, что именно вызывает проблему, но я думаю, что это может быть связано со слоями и тем, как у меня есть несколько функций потерь.

1 Ответ

0 голосов
/ 05 октября 2019

Как говорит ошибка, у нее проблема с формой цели. В идеале, поскольку в модели есть три выхода (loss1,loss2,loss3), на выходе должно быть три массива для сравнения трех выходных массивов. Вы должны передать только один массив в цель и, следовательно, эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...