源代碼如下:,運行這段代碼時,程序可以正常運行,模型可以正常保存。
import tensorflow as tf
v1=tf.Variable(tf.random_normal([1,2]),name="v1")
v2=tf.Variable(tf.random_normal([2,3]),name="v2")
init_op=tf.global_variables_initializer()
saver=tf.train.Saver()
with tf.Session() as sess:
sess.run(init_op)
print("v1:",sess.run(v1))
print("v2:",sess.run(v2))
saver_path=saver.save(sess,"save/model.ckpt")
print("model saved in file:",saver_path
但是在運行下面這段代碼時,卻總是說找不到模型,看了網上的資料,都說是saver.restore(sess,”save/model.ckpt”)有問題,需寫成如下形saver.restore(sess,”./save/model.ckpt”),感覺這個可能tensorflow早期版本存在的問題。最後才發現原來是沒有爲變量命名,且看如下代碼。
錯誤代碼:
import tensorflow as tf
v1=tf.Variable(tf.random_normal([1,2]))
v2=tf.Variable(tf.random_normal([2,3]))
saver=tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess,"./save/model.ckpt")
print("v1",sess.run(v1))
print("v2",sess.run(v2))
print("model restored")
修正代碼:
import tensorflow as tf
v1=tf.Variable(tf.random_normal([1,2]),name="v1") #在這裏需要爲變量命名
v2=tf.Variable(tf.random_normal([2,3]),name="v2")
saver=tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess,"./save/model.ckpt") #在tensorflow3.5版本中加上“./”和不加“./”均可
print("v1",sess.run(v1))
print("v2",sess.run(v2))
print("model restored")