Train_on_batch, сохранение скрытого представления в списке
У меня есть следующий код
for t in range (9400):
autoencoder.compile(loss='binary_crossentropy',
optimizer='rmsprop')
output_layers = ['latent_outputs']
autoencoder.metrics_tensors = [latent_outputs]
x = [layer.output for layer in autoencoder.layers if layer.name in output_layers]
x.remove(x[0])
x = np.asarray(x)
x = np.flatten(x)
x = np.ndarray.reshape(x, (1,360,640,3))
if cny < 9398:
z=tf.keras.layers.average(x[1], a[cny-1:cny, :, :,:])
d = np.tile(z, (360, 1))
a[cny-1:cny,:,:,:]=d
cny+=1
loss = autoencoder.train_on_batch(X_D[t-1:t:,:,:], Y_D[t-1:t:,:,:])
acc_loss += loss
Я бы хотел, чтобы блок кода после компиляции выполнялся каждый раз, когда я вызываю train_on_batch, проблема в том, что я получаю ошибку "индекс списка вне диапазона" в этой строке "x.remove(x[0])", поэтому я решил, что когда код работает, не было вызова train_on_batch для списка x, который нужно заполнить, поэтому он пуст. Как мне адаптировать свой код, поставить ли перед компиляцией команду train на пакетную? или я бы разместил компиляцию в другом месте кода вместе с операторами после нее? Я запутался.