Мой код структурирован следующим образом:
with tf.device('/gpu:1'):
...
model = get_model(input_pl)
...
with tf.Session() as sess:
saver = tf.train.Saver()
sess.run(tf.global_variables_initializer())
for epoch in range(num_epochs):
...
for n in range(num_batches):
...
sess.run(...)
# eval epoch
saver.save(sess, ...)
Я хочу сохранить модель после этапа обучения. Когда я запускаю, это дает мне эту ошибку:
InvalidArgumentError (see above for traceback): Cannot assign a device for operation 'save/SaveV2': Could not satisfy explicit device specification '/device:GPU:1' because no supported kernel for GPU devices is available.
Читая этот вопрос, я изменил код таким образом:
saver = tf.train.Saver()
with tf.device('/gpu:1'):
...
model = get_model(pointcloud_pl)
...
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(num_epochs):
...
for n in range(num_batches):
...
sess.run(...)
# eval epoch
saver.save(sess, ...)
Но теперь я получаю такую ошибку:
ValueError: No variables to save
Я тоже пытался сделать так:
with tf.Session() as sess:
saver = tf.train.Saver()
...
with tf.device('/gpu:1'):
sess.run(tf.global_variables_initializer())
for epoch in range(num_epochs):
...
for n in range(num_batches):
...
sess.run()
# eval epoch
saver.save(sess, ...)
И я все еще получаю ту же ошибку. Ошибка всегда в строке saver = tf.train.Saver()
.
Как я могу решить эту проблему?
Отредактировал первый блок кода. После with tf.device():
и до tf.Session()
Решено сделать это:
tf.Session()
saver = tf.train.Saver()
with tf.device():
Вот пример кода
with tf.Session() as sess:
...
model = get_model(input_pl)
saver = tf.train.Saver()
...
with tf.device('/gpu:1'):
sess.run(tf.global_variables_initializer())
for epoch in range(num_epochs):
...
for n in range(num_batches):
...
sess.run()
# eval epoch
saver.save(sess, ...)
Где вы строите график? Можете ли вы добавить комментарий в код, в котором построен график?