Я работаю над глубоким мультимодальным автокодером в случае неконтролируемого обучения, который принимает два входа с формой (1000, 50) и (1000,60) соответственно, чтобы восстановить два исходных входа. Модель имеет 3 скрытых слоя и стремится объединить два скрытых слоя input1 и input2. Оба выхода затем используются для вычисления двух потерь (MSE).
Обратите внимание, что X и X1 были сгенерированы следующим образом, чтобы вычислить для каждого элемента среднее значение его окрестности:
matrix(1000,50) , matrix1(1000,60) and A is the adjacency matrix with the shape of (1000,1000)
summed_groups_matrix = A@matrix
summed_groups_matrix1 = A@matrix1
neighborhood_sizes = A.sum(axis=1)
X=summed_groups_matrix / neighborhood_sizes
X1=summed_groups_matrix1 / neighborhood_sizes
Полный код мультимодального автокодировщика следующий:
input_X = Input(shape=(X[0].shape))
dense_X = Dense(40,activation='relu')(input_X)
dense1_X = Dense(20,activation='relu')(dense_X)
latent_X= Dense(2,activation='relu')(dense1_X)
input_X1 = Input(shape=(X1[0].shape))
dense_X1 = Dense(40,activation='relu')(input_X1)
dense1_X1 = Dense(20,activation='relu')(dense_X1)
latent_X1= Dense(2,activation='relu')(dense1_X1)
Concat_X_X1 = concatenate([latent_X, latent_X1])
decoding_X = Dense(20,activation='relu')(Concat_X_X1)
decoding1_X = Dense(40,activation='relu')(decoding_X)
output_X = Dense(X[0].shape[0],activation='sigmoid')(decoding1_X)
decoding_X1 = Dense(20,activation='relu')(Concat_X_X1)
decoding1_X1 = Dense(40,activation='relu')(decoding_X1)
output_X1 = Dense(X1[0].shape[0],activation='sigmoid')(decoding1_X1)
multi_modal_autoencoder = Model([input_X, input_X1], [output_X, output_X1], name='multi_modal_autoencoder')
multi_modal_autoencoder.compile(optimizer=keras.optimizers.Adam(lr=0.001),loss='mse')
model = multi_modal_autoencoder.fit([X,X1], [X, X1], epochs=70, batch_size=150)
При использовании multi_modal_autoencoder.evaluate (X, X1) он возвращает эту ошибку:
TypeError: 'method' object is not subscriptable
Что мне следует сдать в model.evaluate?
keras.Model
. См. Пример здесь: keras.io/api/models/model 2) ввод не должен быть списком [X, X1], но одним тензором. Обработайте свои данные перед тем, как приступить к модели. Итак, вы можете сделатьmulti_modal_autoencoder.evaluate(X2,X2)
, где X2 - это некоторая комбинация X и X1 (объединить?). 3) начните с построения модели для прогнозирования одной функции, а затем добавьте сложности. - person Poe Dator   schedule 18.07.2020tf.keras.Model.evaluate()
возвращает значение потерь и значения показателей для модели в тестовом режиме. Поэтому вам нужно передать ему списки входов из тестовой выборки. Попробуйтеmulti_modal_autoencoder.evaluate([X_test,X1_test],[X_test,X1_test])
- person Poe Dator   schedule 18.07.2020multi_modal_autoencoder.evaluate([X,X1],[X,X1])
Хорошо, он работает, но возвращает массив из 3 значений mse, которые я могу интерпретировать . Вот[[0.012900909228595816, 0.003546052612364292, 0.009347316808998585]]
- person Andrea   schedule 18.07.2020