Tensorflow基础代码报错学习笔记1——简单的神经网络

@[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()

解决了以上所有问题后代码成功运行
运行结果如下
Tensorflow基础代码报错学习笔记1——简单的神经网络_第1张图片
最后附所有修改好的代码

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版本换了。

你可能感兴趣的:(tensorflow学习笔记,tensorflow,神经网络,python,深度学习)