首先,谈谈随机训练与批量训练
随机训练其随机性可以达到一定脱离局部最小的效果,然而一般需要迭代多次才能够收敛
批量训练能够快速得到最小损失,然而如果批量训练样本数较大,对于计算资源的消耗也会增加
同时由于批量训练具有平滑的效果,因此其训练误差曲线较为平滑
下面给出示例
首先导入库并创建计算图会话
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
#创建计算图会话
sess = tf.Session()
声明批训练的数据个数
#批量大小
batch_size = 20
生成数据并创建占位符和变量
这里仍然采用之前的示例,即输入数据为N(1,0.1),输出为10,模型为Y=AX
#生成数据并创建在占位符和变量A
x_vals = np.random.normal(1,0.1,100)
y_vals = np.repeat(10.,100)
x_data = tf.placeholder(tf.float32,shape=[None,1])
y_target = tf.placeholder(tf.float32,shape=[None,1])
A = tf.Variable(tf.random_normal(shape=[1,1]))
同样创建模型及L2损失函数,并创建优化器对象
增加乘法操作
my_output = tf.matmul(x_data,A)
#增加损失函数
loss = tf.reduce_mean(tf.square(my_output-y_target))
#在运行之前,需要初始化变量
init = tf.initialize_all_variabl