在写Mnist手写体识别任务(已放github)时遇到的代码问题
我们都知道在session run的时候需要初始化。但是初始化在什么位置是至关重要的。来看下这段代码:
sess = tf.Session()
sess.run(tf.global_variables_initializer())
mnist_model = Mnist(class_num, max_len, high, width, channel)
1. 起了一个session
2. 全局化了初始变量
3. New了一个Mnist网络结构
然而在运行的时候会报错:
![9a93ff9b2757f48b4e296a770e68ae09.png](https://img-blog.csdnimg.cn/img_convert/9a93ff9b2757f48b4e296a770e68ae09.png)
但是明明已经初始化了,怎么还给我说用了没有初始化的变量呢?
来分析一下上面这段代码的逻辑:初始化了之后才new一个网络结构,所以初始化了什么东西?初始化了一个空的东西——压根什么都没有初始化。
应该把要初始化的东西都定义好之后,再执行初始化的句子,来看下面正确的代码:
# 先初始化一个模型的类,然后再初始化全局变量
mnist_model = Mnist(class_num, max_len, high, width, channel)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
1. 先把网络都定义好
2. 起一个session
3. 初始化全局变量
这时候初始化就有东西了,要注意好顺序。更改代码后运行的结果(acc):
![b57cdd3a9f7f6b671757acb83c5689a8.png](https://img-blog.csdnimg.cn/img_convert/b57cdd3a9f7f6b671757acb83c5689a8.png)
怎么到99的我会在下一篇中详细说明