本文内容基于深度学习应用开发-TensorFlow实践慕课教程。
示例
课程以y=2*x+1为例,人工生成数据集,构建、训练模型,最后进行预测。
下面是我在Anaconda上照猫画虎敲的代码:
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x_data = np.linspace(-1,1,100)
np.random.seed(5)
y_data = 2 * x_data + 1 + np.random.randn(*x_data.shape) * 0.4#加入噪声
#画出散点图
plt.scatter(x_data,y_data)
plt.plot(x_data,2 * x_data + 1,color = 'red',linewidth=1)
#前向计算
def model(x,w,b):
return tf.multiply(x,w)+b
#初始化参数w,b
w =tf.Variable(np.random.randn(),tf.float32)
b = tf.Variable(0.0,tf.float32)
#均方差损失函数(回归问题最常用的损失函数)
def loss(x,y,w,b):
err = model(x,w,b) - y
return tf.reduce_mean(tf.square(err))
#超参数设置的不同将直接导致结果的准确性。
epochs = 10
lr = 0.01
#计算梯度
def grad(x,y,w,b):
with tf.GradientTape() as tape:
loss_ = loss(x,y,w,b)
return tape.gradient(loss_,[w,b])
#记录训练步数
step = 0
#保存loss值的列表
loss_list = []
#每隔多少步显示一次loss值
display_step = 40
for epoch in range(epochs):
for xs,ys in zip(x_data,y_data):
loss_ = loss