私は CNN を使用してデータセット (1000,3253) に取り組んできました。勾配テープを使用して勾配計算を実行していますが、メモリが不足し続けています。それでも、勾配計算をリストに追加する行を削除すると、スクリプトはすべてのエポックを実行します。なぜこれが起こるのか完全にはわかりませんが、テンソルフローとグラデーションテープの使用も初めてです。アドバイスやご意見をいただければ幸いです
#create a batch loop
for x, y_true in train_dataset:
#create a tape to record actions
with tf.GradientTape(watch_accessed_variables=False) as tape:
x_var = tf.Variable(x)
tape.watch([model.trainable_variables,x_var])
y_pred = model(x_var,training=True)
tape.stop_recording()
loss = los_func(y_true, y_pred)
epoch_loss_avg.update_state(loss)
epoch_accuracy.update_state(y_true, y_pred)
#pdb.set_trace()
gradients,something = tape.gradient(loss, (model.trainable_variables,x_var))
#sa_input.append(tape.gradient(loss, x_var))
del tape
#apply gradients
sa_input.append(something)
opti_func.apply_gradients(zip(gradients, model.trainable_variables))
train_loss_results.append(epoch_loss_avg.result())
train_accuracy_results.append(epoch_accuracy.result())