@[b站Up的tensorflow教程视频原地址](https://www.bilibili.com/video/BV1Lx411j7ws?p=9)目录标题)
没有授权转载,只是如果大家想学习的话可以去b站看原视频
这个笔记是我跟着up主的教程打代码的时候遇到了一些问题(大部分是tensorflow版本问题)以及一些解决办法
先看原教程代码
(附部分up讲解的注释)*****
import tensorflow as tf
import numpy as np
#create data#
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
###create tensorflow structure start###
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))#weight可能是多元矩阵所以最好大写#
biases = tf.Variable(tf.zeros([1]))#不要忘记zeros的s#
y = Weights*x_data + biases#计算预测的y的准确度#
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = optimizer = tf.train.GradientDescentOptimizer(0.5)#建立优化器,0.5是学习效率#
train = optimizer.minimize(loss)#优化器减少误差,提升神经网络参数准确度#
init = tf.initialize_all_variables_()#初始化网络结构#
###create tensorflow structure end###
#session#
sess = tf.session()
sess.run(init) #activate cnn很重要#
#开始训练,201次数#
for step in range(201):
sess.run(train)
if step % 20 == 0 : #每隔20步打印#
print(step,sess.run(Weights),sess.run(biases))
由于我用Tensorflow2.0版本,教程为其他版本问题出现以下报错
1
AttributeError: module ‘tensorflow’ has no attribute 'random_uniform’
查看代码
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
更改为
Weights = tf.Variable(tf.random.uniform([1],-1.0,1.0))
成功运行
2
AttributeError: module ‘tensorflow._api.v2.train’ has no attribute 'GradientDescentOptimizer’
查看代码
optimizer = optimizer = tf.train.GradientDescentOptimizer(0.5)
改为
optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5)
这里我因为少打了参数0.5,所以报过这样一个错误
TypeError: minimize() missing 1 required positional argument: 'loss’
查看代码为
optimizer = tf.compat.v1.train.GradientDescentOptimizer
补充参数(0.5)即可
3
"loss
passed to Optimizer.compute_gradients should "
RuntimeError: loss
passed to Optimizer.compute_gradients should be a function when eager execution is enabled.
看别的博主说这是因为
“loss传递给Optimizer.compute_gradients启用了一个立即执行的函数。在Tensorflow 2.0中,eager execution默认开启。”
**解决方法:**我在import 之后添加下面这句代码就可以了。
(我觉得在loss传输之前输入这句就可以)
tf.compat.v1.disable_eager_execution()
4
AttributeError: module ‘tensorflow’ has no attribute ‘initialize_all_variables’
AttributeError: module ‘tensorflow’ has no attribute 'global_variables_initializer’
查看代码
init = tf.initialize_all_variables_()
这里在查了一些解决办法后发现以下两种方案均已弃用
init = tf.initialize_all_variables()
init = tf.global_variables_initializer()
改为以下代码可正常运行
init = tf.compat.v1.global_variables_initializer()
5
AttributeError: module ‘tensorflow’ has no attribute 'session’
因为Tensorflow2.0已经移除Session模块
将代码修改为
sess = tf.compat.v1.Session()
解决了以上所有问题后代码成功运行
运行结果如下
最后附所有修改好的代码
import tensorflow as tf
import numpy as np
#关闭立即执行的函数#
tf.compat.v1.disable_eager_execution()
#create data#
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
###create tensorflow structure start###
Weights = tf.Variable(tf.random.uniform([1],-1.0,1.0))#weight可能是多元矩阵所以最好大写#
biases = tf.Variable(tf.zeros([1]))#不要忘记zeros的s#
y = Weights*x_data + biases#计算预测的y的准确度#
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5)#建立优化器,0.5是学习效率#
train = optimizer.minimize(loss)#优化器减少误差,提升神经网络参数准确度#
init = tf.compat.v1.global_variables_initializer()#初始化网络结构#
###create tensorflow structure end###
#session#
sess = tf.compat.v1.Session()
sess.run(init) #activate cnn很重要#
#开始训练,201次数#
for step in range(201):
sess.run(train)
if step % 20 == 0 : #每隔20步打印#
print(step,sess.run(Weights),sess.run(biases))
第一次用CSDN记笔记,所以哪里做的不好欢迎交流指正。
当然之后可能会尝试把2.0版本换了。