tensorflow学习笔记_0001_小型回归模型

tensorflow学习第一课,以下代码,在Spyder+window10环境上编译运行。

一、源码与注释

#1、导入tensorflow库
import tensorflow as tf


#2、定义训练次数,后面调试时修改
TRAIN_TIMES = 100

#3、定义输入输出数据
x = tf.constant([[1], [2], [3], [4]], dtype=tf.float32)
y_true = tf.constant([[0], [-1], [-2], [-3]], dtype=tf.float32)

#4、定义1个神经元的全连接网络
linear_model = tf.layers.Dense(units=1)

#5、通过步骤4定义的全神经网络预测y_pred值
y_pred = linear_model(x)

#6、定义损失函数,使用均方误差。
loss = tf.losses.mean_squared_error(labels=y_true, predictions=y_pred)

#7、使用梯度下降法优化网络参数
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

#8、初始化参数
init = tf.global_variables_initializer()

#9、创建会话,初始化层,必须调用sess.run(init),否则会FailedPreconditionError错误
sess = tf.Session()
sess.run(init)

#10、执行层
loss_value = 0
for i in range(TRAIN_TIMES):
     _, loss_value = sess.run((train, loss))

#11、打印最终的预测值和均方误差
print("训练次数:{0},训练误差:{1}".format(TRAIN_TIMES,loss_value))
for i in range(4):
    print("第{0}个样本值:[{1}],第1个预测值:{2}".format(i,0-i,sess.run(y_pred)[i]))

二、运行结果与分析

1、TRAIN_TIMES = 100

训练次数:100,训练误差:0.05641983449459076
第0个样本值:[0],第1个预测值:[-0.38238698]
第1个样本值:[-1],第1个预测值:[-1.1852927]
第2个样本值:[-2],第1个预测值:[-1.9881985]
第3个样本值:[-3],第1个预测值:[-2.791104]

2、将TRAIN_TIMES改为1000,执行结果如下:

训练次数:1000,训练误差:0.0006950039532966912
第0个样本值:[0],第1个预测值:[-0.04244047]
第1个样本值:[-1],第1个预测值:[-1.0205653]
第2个样本值:[-2],第1个预测值:[-1.99869]
第3个样本值:[-3],第1个预测值:[-2.9768147]

很显然,误差小很多了

3、将TRAIN_TIMES改为10000试下,几乎已经接近样本实际值了。

训练次数:10000,训练误差:2.205258198273441e-11
第0个样本值:[0],第1个预测值:[-7.4505806e-06]
第1个样本值:[-1],第1个预测值:[-1.0000035]
第2个样本值:[-2],第1个预测值:[-1.9999995]
第3个样本值:[-3],第1个预测值:[-2.9999955]

猜你喜欢

转载自blog.csdn.net/u013638184/article/details/87990753