Tensorflow: Variabel baru yang ditambahkan tidak dapat disimpan

Dibuat pada 24 Mei 2016  ·  1Komentar  ·  Sumber: tensorflow/tensorflow

Saya menguji dengan menjalankan 3 buah kode ini masing-masing.

Pertama, init beberapa variabel dan simpan.

import tensorflow as tf

sess = tf.InteractiveSession()
v1 = tf.Variable(1,name="v1")
v2 = tf.Variable(2,name="v2")
sess.run(tf.initialize_all_variables())
saver = tf.train.Saver()
saver.save(sess,'v12.ckpt')

Kemudian, pulihkan sesi, tambahkan satu variabel lagi, dan simpan.

import tensorflow as tf

sess = tf.InteractiveSession()
v1 = tf.Variable(1,name="v1")
v2 = tf.Variable(2,name="v2")
saver = tf.train.Saver()
saver.restore(sess,'v12.ckpt')  #works fine here

v3 = tf.Variable(3,name="v3")
sess.run(tf.initialize_variables([v3]))

saver.save(sess,'v123.ckpt')

print v3.eval() #show value without problem

Kemudian, pulihkan.

import tensorflow as tf

sess = tf.InteractiveSession()
v1 = tf.Variable(1,name="v1")
v2 = tf.Variable(2,name="v2")
v3 = tf.Variable(3,name="v3")

saver = tf.train.Saver()
saver.restore(sess,'v123.ckpt') #error here

Ini adalah kesalahannya:

tensorflow.python.framework.errors.NotFoundError: Tensor name "v3" not found in checkpoint files v123.ckpt [[Node: save/restore_slice_2 = RestoreSlice[dt=DT_INT32, preferred_shard=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_save/Const_0, save/restore_slice_2/tensor_name, save/restore_slice_2/shape_and_slice)]] Caused by op u'save/restore_slice_2'

Apa masalah yang terjadi di sini?

Saya menggunakan versi r0.8 di Ubuntu16.04

Komentar yang paling membantu

Saat Anda membuat tf.train.Saver tanpa argumen, itu akan secara implisit menggunakan kumpulan variabel saat ini _pada saat konstruksi Saver_ saat menyimpan dan memulihkan. Jika Anda menambahkan variabel baru (misalnya v3 di blok kode kedua Anda), Anda harus membuat tf.train.Saver untuk menyimpannya.

import tensorflow as tf

sess = tf.InteractiveSession()
v1 = tf.Variable(1,name="v1")
v2 = tf.Variable(2,name="v2")
saver = tf.train.Saver()
saver.restore(sess,'v12.ckpt')  #works fine here

v3 = tf.Variable(3,name="v3")
sess.run(tf.initialize_variables([v3]))

saver_with_v3 = tf.train.Saver()
saver_with_v3.save(sess,'v123.ckpt')

>Semua komentar

Saat Anda membuat tf.train.Saver tanpa argumen, itu akan secara implisit menggunakan kumpulan variabel saat ini _pada saat konstruksi Saver_ saat menyimpan dan memulihkan. Jika Anda menambahkan variabel baru (misalnya v3 di blok kode kedua Anda), Anda harus membuat tf.train.Saver untuk menyimpannya.

import tensorflow as tf

sess = tf.InteractiveSession()
v1 = tf.Variable(1,name="v1")
v2 = tf.Variable(2,name="v2")
saver = tf.train.Saver()
saver.restore(sess,'v12.ckpt')  #works fine here

v3 = tf.Variable(3,name="v3")
sess.run(tf.initialize_variables([v3]))

saver_with_v3 = tf.train.Saver()
saver_with_v3.save(sess,'v123.ckpt')
Apakah halaman ini membantu?
0 / 5 - 0 peringkat