推荐看下面这篇博文,代码没问题:
https://blog.csdn.net/thriving_fcl/article/details/71423039#commentBox
由于TensorFlow相比keras较为复杂,所以附带一点自己的理解:
- 测试的时候不需要进行变量初始化
- 测试的时候没有反向传播的过程
- tf.train.import_meta_graph()是导入训练时保存好的图
- 在训练时保存了tf.add_to_collection(‘pred_network’, y),我的理解是给模型输出y一个占位符。然后导入时用y = tf.get_collection(‘pred_network’)[0]来获取这个占位符。这样就相当于获取了模型输出了。这前面的[0]不能省。
- inputs1=graph.get_operation_by_name(‘inputs1’).outputs[0]
labels=graph.get_operation_by_name(‘labels’).outputs[0]
训练模型时,inputs1和labels是我设置的两个placeholder,命名name='inputs1’和name=‘labels’,这里通过graph.get_operation_by_name().outputs[0]来获取这两个placeholder,我们可以在测试时往里面喂数据。这里的[0]也不能省。 - 最后就是saver.restore(),以上就是恢复模型的重点。