TensorFlow的基本使用
TensorFlow的一些基础函数的使用
tf.placeholder、tf.Variable、tf.multiply、tf.reduce_sum、tf.pow、tf.train.GradientDescentOptimizer(0.001).minimize(loss)、tf.train.AdagradOptimizer、tf.train.AdamOptimizer、sess = tf.Session()、tf.global_variables_initializer()、sess.run()
import tensorflow as tf
import numpy as np
#通过引入os模块的这个功能,可以实现机器的SSE指令来加速CPU的计算
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
# 通过np.random.rand()可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。
inputX = np.random.rand(100)
# np.multiply()是计算叉乘的,而np.dot()计算点乘。
inputY = np.multiply(3 , inputX) + 1
# placeholder()函数是在神经网络构建graph的时候在模型中的 占位 ,此时并没有把要输入的数据传入模型,它只会分配必要的内存。
# 等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据。
x = tf.placeholder(tf.float32)
# tf.Variable()是变量的声明函数,变量的初始值可以设置成随机数,常数或者是通过其他变量的初始值计算得到。
weight = tf.Variable(0.25)
bias = tf.Variable(0.25)
# tf.multiply表示叉乘,点乘则是tf.matmul
y = tf.multiply(weight , x) + bias
y_ = tf.placeholder(tf.float32)
# 这一步是计算loss function,tf.reduce_sum()函数是求和函数,tf.pow(x , y)的意思是计算x^y,
# 在下一行中的意思就是计算(y-y_)^2,也就是计算root mean square。
loss = tf.reduce_sum(tf.pow((y - y_) , 2))
# 此步的作用即定义反向传播方法,tf.train.GradientDescentOptimizer为优化器,里面的0.001则是learning rate,
# 而minimize()的作用则是 1、计算loss对指定val_list的梯度(导数),返回元组列表;2、用计算得到的梯度来更新对应的变量(权重)。
# 以下的tf.train.GradientDescentOptimizer旨在对所有步骤中的所有变量使用恒定的学习率,
# 而如果需要自适应的learning rate的话可以使用tf.train.AdagradOptimizer和tf.train.AdamOptimizer等优化器
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
# Session 是 Tensorflow 为了控制,和输出文件的执行的语句. 运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分。
sess = tf.Session()
# 此函数是初始化模型的参数,当我们训练自己的神经网络的时候,无一例外的就是都会加上这一句 tf.global_variables_initializer().run()
# 或者 sess.run(tf.global_variables_initializer())
init = tf.global_variables_initializer()
# 初始化这些变量,相当于运算一次
sess.run(init)
for _ in range(1000):
# 通过选取样本训练神经网络并更新参数,即选取的是feed_dict中的样本,更新的是train_step参数(因为train_step之前设置过优化器,所以是)
sess.run(train_step , feed_dict={x:inputX , y_:inputY})
运行结果如下所示:
W的值为: 0.499787 ; bias的值为: 0.670009
W的值为: 1.58121 ; bias的值为: 1.73838
W的值为: 1.90081 ; bias的值为: 1.57591
W的值为: 2.14719 ; bias的值为: 1.44684
W的值为: 2.33834 ; bias的值为: 1.34668
W的值为: 2.48665 ; bias的值为: 1.26898
W的值为: 2.60171 ; bias的值为: 1.20869
W的值为: 2.69098 ; bias的值为: 1.16191
W的值为: 2.76025 ; bias的值为: 1.12562
W的值为: 2.81399 ; bias的值为: 1.09746
W的值为: 2.85568 ; bias的值为: 1.07562
W的值为: 2.88803 ; bias的值为: 1.05867
W的值为: 2.91313 ; bias的值为: 1.04552
W的值为: 2.9326 ; bias的值为: 1.03532
W的值为: 2.94771 ; bias的值为: 1.0274
W的值为: 2.95943 ; bias的值为: 1.02126
W的值为: 2.96852 ; bias的值为: 1.01649
W的值为: 2.97558 ; bias的值为: 1.0128
W的值为: 2.98105 ; bias的值为: 1.00993
W的值为: 2.9853 ; bias的值为: 1.0077
W的值为: 2.98859 ; bias的值为: 1.00598
W的值为: 2.99115 ; bias的值为: 1.00464
W的值为: 2.99313 ; bias的值为: 1.0036
W的值为: 2.99467 ; bias的值为: 1.00279
W的值为: 2.99587 ; bias的值为: 1.00217
W的值为: 2.99679 ; bias的值为: 1.00168
W的值为: 2.99751 ; bias的值为: 1.0013
W的值为: 2.99807 ; bias的值为: 1.00101
W的值为: 2.9985 ; bias的值为: 1.00078
W的值为: 2.99884 ; bias的值为: 1.00061
W的值为: 2.9991 ; bias的值为: 1.00047
W的值为: 2.9993 ; bias的值为: 1.00037
W的值为: 2.99946 ; bias的值为: 1.00028
W的值为: 2.99958 ; bias的值为: 1.00022
W的值为: 2.99967 ; bias的值为: 1.00017
W的值为: 2.99975 ; bias的值为: 1.00013
W的值为: 2.9998 ; bias的值为: 1.0001
W的值为: 2.99985 ; bias的值为: 1.00008
W的值为: 2.99988 ; bias的值为: 1.00006
W的值为: 2.99991 ; bias的值为: 1.00005
W的值为: 2.99993 ; bias的值为: 1.00004
W的值为: 2.99994 ; bias的值为: 1.00003
W的值为: 2.99996 ; bias的值为: 1.00002
W的值为: 2.99997 ; bias的值为: 1.00002
W的值为: 2.99997 ; bias的值为: 1.00001
W的值为: 2.99998 ; bias的值为: 1.00001
W的值为: 2.99998 ; bias的值为: 1.00001
W的值为: 2.99999 ; bias的值为: 1.00001
W的值为: 2.99999 ; bias的值为: 1.0
W的值为: 2.99999 ; bias的值为: 1.0