作者Paudse (HI)
看板Python
标题TensorFlow网路参数储存问题
时间Mon Apr 23 19:44:55 2018
我想将NN的参数储存下次继续学习
但发现储存时似乎发生问题
叫出的参数每次都一样
我的程式结构如下
还请强者指教
谢谢
class DQ:
def __init__():
self.sess = tf.Session()
saver = tf.train.Saver()
self.sess.run(tf.global_variables_initializer())
with tf.Session() as sess:
if os.path.isfile("save_net.ckpt.index"):
saver.restore(sess, "save_net.ckpt")
print('File exists, loading previous data!')
else:
# save_path = self.saver.save(self.sess, "save_net.ckpt")
print('File does not exist, starting fresh')
def _build_net(self):
省略
def learn(self,save_step):
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
save_path = saver.save(sess, "save_net.ckpt")
print('save parameters')
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.53.213
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1524483897.A.B1B.html
※ 编辑: Paudse (140.112.53.213), 04/23/2018 19:45:34
※ 编辑: Paudse (140.112.53.213), 04/23/2018 19:46:19
1F:推 jameszhan: 用with的话 你要跟训练在同一个with里吧 04/24 08:25
2F:→ jameszhan: 不然你存参数时候的session应该没东西 04/24 08:25
3F:推 jameszhan: 最後的with那行等於一个新的session 你初始化参数後就 04/24 08:35
4F:→ jameszhan: 直接存 中间应该要有训练过程 04/24 08:35
5F:→ jameszhan: 还是你只是想问为何初始化後存的参数会一样? 04/24 08:44
6F:→ Paudse: 恩恩 对阿 初始化参数都会一样 是为什麽呢 谢谢 04/24 10:38
7F:→ Paudse: 甚至我把之前处存的ckpt档都删了 跑出来的参数还是一样 04/24 10:39
8F:→ Paudse: 我朋友後来说他会存很多个ckpt 可以设定几个epoch存一次 04/24 10:41
9F:→ Paudse: 要restore最後一个ckpt才是最接近训练最後的结果 04/24 10:41
10F:推 jameszhan: 当然啊 你可以看一下tensorflow的文件 04/24 13:13
11F:推 jameszhan: saver(max=n) 可以设定要保留几个档案 04/24 13:16
12F:→ Paudse: 我现在用model_file=tf.train.latest_checkpoint('ckpt/') 04/24 13:31
13F:→ Paudse: saver.restore(sess,model_file) 04/24 13:31
14F:→ Paudse: 但还是都从最一开始的开始训练 不知道是怎麽回事 04/24 13:32
15F:→ Paudse: 另外也已经改成saver=tf.train.Saver(max_to_keep=1) 04/24 13:33
16F:推 goldflower: =1代表只存一个吧 04/24 13:34
18F:→ goldflower: 照这个做应该就好了 04/24 13:34
19F:→ jameszhan: 参数初始化的部分可以看这个truncated_normal_initiali 04/24 13:48
20F:推 jameszhan: 从最一开始的训练或许是你本来就只有一开始才有存? 04/24 13:50
21F:→ jameszhan: 直接去github看别人完整的code比较快 看人家怎麽用的 04/24 13:51
22F:→ chchan1111: 对了 你这个code是不是怪怪的 你一开始就有实体化 04/24 13:54
23F:→ chchan1111: session了 为何後面还要with tf.se.... 04/24 13:54
24F:→ Paudse: 感谢各位的建议 我後来发现 我原本把放在saver.restore 04/24 13:54
25F:→ chchan1111: 直接self.sess.run就可以了 不然你等於又实体化一个 04/24 13:55
26F:→ chchan1111: session 04/24 13:55
27F:→ Paudse: 一个if判断句里面检查有没有之前存的ckpt 但一值失败 04/24 13:55
28F:→ Paudse: 我後来把saver.restore拿出那个if结构外就可以了 04/24 13:55
29F:→ Paudse: 虽然不太懂为何会有这个问题 不过现在OK了 感谢大家!! 04/24 13:56
30F:→ Paudse: 大大们说的没错 我後来把with拿掉了 04/24 14:12