TensorFlow的实例

任务:损失函数𝐽 = 𝑤2 −10𝑤 +25,使用TensorFlow找到使损失函数最小的𝑤值。

import numpy as np
import tensorflow as tf

w=tf.Variable(0,dtype=tf.float32)
cost=tf.add(tf.add(w**2,tf.multiply(-10.,w)),25)            #定义损失函数,或者写成w**2-10*w+25
train=tf.train.GradientDescentOptimizer(0.01).minimize(cost)#使用0.01的学习率最小化损失

init=tf.global_variables_initializer()
session=tf.Session()        #开启一个TensorFlow session
session.run(init)           #初始化全局变量
print(session.run(w))       #0.0

session.run(train)     
print(session.run(w))       #在一步梯度下降法之后,w是0.1

for i in range(1000):       #梯度下降1000次之后,w的值接近5
    session.run(train)
print(session.run(w))

更通用的写法

 1 import numpy as np
 2 import tensorflow as tf
 3 
 4 coefficients=np.array([[1.],[-10.],[25.]])  #系数数组(可换成其他数组)
 5 
 6 w=tf.Variable(0,dtype=tf.float32)
 7 x=tf.placeholder(tf.float32,[3,1])          #x变成[3,1]数组,placeholder函数告诉TensorFlow稍后为x提供数组,便于把训练数据加入损失方程
 8 cost=x[0][0]*w**2+x[1][0]*w+x[2][0]         #损失函数的另一种写法
 9 train=tf.train.GradientDescentOptimizer(0.01).minimize(cost)#使用0.01的学习率最小化损失
10 
11 init=tf.global_variables_initializer()
12 session=tf.Session()        #开启一个TensorFlow session
13 session.run(init)           #初始化全局变量
14 print(session.run(w))       #0.0
15 
16 session.run(train,feed_dict={x:coefficients})     #将系数数组接入x,加入损失方程
17 print(session.run(w))                             #0.1
18 
19 for i in range(1000):
20     session.run(train,feed_dict={x:coefficients})
21 print(session.run(w))                             #4.99999

TensorFlow程序的核心是计算损失函数,自动计算导数,以及如何最小化损失。

𝑐𝑜𝑠𝑡 = 𝑥[0][0]∗𝑤 ∗∗2+𝑥[1][0]∗𝑤 +𝑥[2][0]这行代码所做的就是让TensorFlow建立计算图。计算图所做的就是取𝑥[0][0],取𝑤,然后将它平方,然后𝑥[0][0]和𝑤**2相乘,你就得到了𝑥[0][0]∗𝑤**2,以此类推,最终整个建立起来计算𝑐𝑜𝑠𝑡 = 𝑥[0][0]∗𝑤 ∗∗2+𝑥[1][0]∗𝑤 +𝑥[2][0],最后你得到了损失函数。

posted @ 2020-06-13 23:53  最咸的鱼  阅读(596)  评论(0编辑  收藏  举报