![](/img/trans.png)
[英]Tensorflow: Why must `saver = tf.train.Saver()` be declared after variables are declared?
[英]Problem with tf.train.Saver() and GPU - TensorFlow
我的代碼結構如下:
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()
行中。
我怎么解決這個問題?
解決了這個問題:
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, ...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.