原学习视频链接如下所示:
https://www.bilibili.com/video/BV1Lx411j7ws?p=9&vd_source=86dc52f925822270fe5d0498ebe0afd2
import tensorflow as tf
print('Tensorflow Vesion:{}'.format(tf.__version__))#输出tensorflow版本,这里版本为2.50
import numpy as np
#tensorflow2.0以上的版本会出现一些不同
#为确保高版本的TF支持低版本的TF代码,升级脚本加入了 compat.v1 模块
#关闭立即执行的函数
#“loss传递给Optimizer.compute_gradients启用了一个立即执行的函数。在Tensorflow 2.0中,eager execution默认开启。
tf.compat.v1.disable_eager_execution()
#创建数据集
x_data=np.random.rand(100).astype(np.float32)
y_data=x_data*0.1+0.3
#初始化权重和偏置
Weigths=tf.Variable(tf.random.uniform([1],-0.1,0.1))
biases=tf.Variable(tf.zeros([1]))
#预测值
y=Weigths*x_data+biases
#损失误差
loss=tf.reduce_mean(tf.square(y-y_data))
#构建优化器并对参数进行优化,使误差最小
optimizer=tf.compat.v1.train.GradientDescentOptimizer(0.5)
train=optimizer.minimize(loss)
#建立变量后还要出示话变量
init=tf.compat.v1.global_variables_initializer()#初始化神经网络的结构
#创建结构图
sess=tf.compat.v1.Session()
#激活结构图
#run()相当于一个指针
sess.run(init)
#优化训练
for step in range(200):
sess.run(train)#指向需要优化的损失函数
if step %20==0:
print(step,sess.run(Weigths),sess.run(biases))
print('训练结束!')
结果:可见weigths和biases在训练过程中逐渐接近0.1和0.3
0 [0.22956732] [0.3162965]
20 [0.12569664] [0.2861895]
40 [0.10704458] [0.29621392]
60 [0.10193123] [0.2989621]
80 [0.10052945] [0.29971546]
100 [0.10014514] [0.29992202]
120 [0.10003977] [0.29997864]
140 [0.10001092] [0.29999414]
160 [0.10000302] [0.2999984]
180 [0.10000083] [0.29999956]
训练结束!
进程已结束,退出代码为 0
注意!!
tensorflow2.0以上的的版本有些不支持原有版本里面的用法
如:
1.均匀分布
原版本:
tf.random_uniform()
2.0以上版本:
tf.random.uniform()
2.AttributeError: module 'tensorflow._api.v2.train' has no attribute 'GradientDescentOptimizer’
原版本:
tf.train.GradientDescentOptimizer(0.5)
2.0以上版本:
tf.compat.v1.train.GradientDescentOptimizer(0.5)
其中compat.v1是为了高版本的tf可以支持低版本里面的代码
同理:
3.创建结构图
原版本:
sess=tf.compat.v1.Session()
2.0以上版本:
sess=tf.compat.v1.Session()
4.初始化神经网络结构
原版本:
init=tf.global_variables_initializer()
或:
Init=tf.initialize_all_variables()
2.0以上版本:
init=tf.compat.v1.global_variables_initializer()#初始化神经网络的结构