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))

更通用的写法

import numpy as np
import tensorflow as tf

coefficients=np.array([[1.],[-10.],[25.]])  #系数数组(可换成其他数组)

w=tf.Variable(0,dtype=tf.float32)
x=tf.placeholder(tf.float32,[3,1])          #x变成[3,1]数组,placeholder函数告诉TensorFlow稍后为x提供数组,便于把训练数据加入损失方程
cost=x[0][0]*w**2+x[1][0]*w+x[2][0]         #损失函数的另一种写法
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,feed_dict={x:coefficients})     #将系数数组接入x,加入损失方程
print(session.run(w))                             #0.1

for i in range(1000):
    session.run(train,feed_dict={x:coefficients})
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],最后你得到了损失函数。