Autoencoder.fit() вызывает «KeyError: «Исключение, возникшее при вызове Functional.call()»Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Autoencoder.fit() вызывает «KeyError: «Исключение, возникшее при вызове Functional.call()»

Сообщение Anonymous »

Я пытаюсь создать составной автокодер последовательности LSTM, который принимает сигнал из 430 временных шагов, каждый из которых имеет 1 значение. Код модели можно увидеть ниже:

Код: Выделить всё

feat_dim = 1
timesteps = 430
inputs = keras.Input(shape = (timesteps, feat_dim), dtype = 'float32')
x = layers.LSTM(320, activation = 'relu', return_sequences = True)(inputs)
x = layers.LSTM(256, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(128, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(64, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(32, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(16, activation = 'relu', return_sequences = True)(x)
encoded = layers.LSTM(encoding_dim, activation = 'relu', return_sequences = False)(x)

x = layers.RepeatVector(timesteps)(encoded)
x = layers.LSTM(16, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(32, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(64, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(128, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(256, activation = 'relu', return_sequences = True)(x)
x = layers.LSTM(320, activation = 'relu', return_sequences = True)(x)
decoded = layers.TimeDistributed(layers.Dense(feat_dim, activation = 'sigmoid'))(x)

autoencoder = keras.Model(input_dim, decoded)
encoder = keras.Model(input_dim, encoded)
encoded_input = keras.Input(shape=(timesteps, encoding_dim,))
decoded_layer = autoencoder.layers[-7](encoded_input)
decoded_layer = autoencoder.layers[-6](decoded_layer)
decoded_layer = autoencoder.layers[-5](decoded_layer)
decoded_layer = autoencoder.layers[-4](decoded_layer)
decoded_layer = autoencoder.layers[-3](decoded_layer)
# decoded_layer = autoencoder.layers[-2](decoded_layer)
decoded_layer = autoencoder.layers[-1](decoded_layer)
decoder = keras.Model(encoded_input, decoded)
autoencoder.compile(optimizer = 'adam', loss = 'mean_squared_error')

autoencoder.fit(xtrainsc, xtrainsc,
epochs = 50,
batch_size = 128,
shuffle = True,
validation_data = (xtestsc, xtestsc))
Когда я запускаю autoencoder.summary(), я получаю сводную информацию о модели нормально, но когда я запускаю autoencoder.fit(), я получаю следующую ошибку:< /p>

Код: Выделить всё

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
 in ()
----> 1 autoencoder.fit(xtrainsc, xtrainsc,
2                epochs = 50,
3                batch_size = 128,
4                shuffle = True,
5                validation_data = (xtestsc, xtestsc))

/usr/local/lib/python3.10/dist-packages/keras/src/utils/traceback_utils.py in error_handler(*args, **kwargs)
120             # To get the full stack trace, call:
121             # `keras.config.disable_traceback_filtering()`
--> 122             raise e.with_traceback(filtered_tb) from None
123         finally:
124             del filtered_tb

/usr/local/lib/python3.10/dist-packages/keras/src/ops/function.py in _run_through_graph(self, inputs, operation_fn, call_fn)
177         output_tensors = []
178         for x in self.outputs:
-->  179             output_tensors.append(tensor_dict[id(x)])
180
181         return tree.pack_sequence_as(self._outputs_struct, output_tensors)

KeyError: 'Exception encountered when calling Functional.call().\n\n\x1b[1m139922652929696\x1b[0m\n\nArguments received by Functional.call():\n  • inputs=tf.Tensor(shape=(None, 430, 1), dtype=float32)\n  • training=True\n  • mask=None'
Я уже изменил свой набор данных (пакет, временные шаги, функция), и когда я пробую приведенный ниже код, адаптированный из оригинального руководства по созданию автоэнкодеров keras, он работает, просто поезд и потеря проверки начинает давать значения NaN через несколько эпох.

Код: Выделить всё

encoded = layers.LSTM(encoding_dim, activation = 'relu')(inputs)
x = layers.RepeatVector(timesteps)(encoded)
decoded = layers.LSTM(encoding_dim, activation = 'relu', return_sequences = True)(x)
decoded = layers.TimeDistributed(layers.Dense(feat_dim, activation = 'sigmoid'))(decoded)

autoencoder = keras.Model(inputs, decoded)
encoder = keras.Model(inputs, encoded)
encoded_input = keras.Input(shape=(timesteps, encoding_dim))
decoder = keras.Model(encoded_input, decoded)
Кто-нибудь сталкивался с подобной ошибкой и исправил ее? Я хотел бы получить некоторую помощь в этом. Заранее спасибо.


Подробнее здесь: https://stackoverflow.com/questions/793 ... g-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»