本文共 1896 字,大约阅读时间需要 6 分钟。
Session
对象在使用完后需要关闭以释放资源,除了显式调用 close 外,也可以使用 with
代码块来自动完成关闭动作init = tf.global_variables_initializer()
赋初值X = tf.placeholder(tf.float32, [None, 5], name = 'X')
None
,一组数据有 5
个特征sess.run(..., feed_dict = {X: ...})
W = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))
tf.truncated_normal()
去掉偏离点过大的正态分布tf.random_uniform(shape=7,minval=0,maxval=1,dtype=tf.int32, seed=1)
平均分布,左闭右开tf.where()
类似 ? :
表达式均方误差 MSE(Mean Square Error)
cost = tf.reduce_mean(tf.square(yhat-y))
tf.reduce_mean()
求平均值交叉熵 Cross Entropy
-tf.reduce_mean(yhat * tf.log(tf.clip_by_value(y,1e-12,1.0)))
若y 小于 1e-12 则为1e-12,大于 1.0 则为 1.0;再取平均tf.nn.sparse_cross_entropy_with_logits(logits, labels)
tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
tf.train.MomentumOptimizer(learning_rate, momentum).minimize(cost)
tf.train.AdamOptimizer(learning_rate).minimize(cost)
global_step = tf.Variable(0, trainable = False)
不被训练learning_rate = tf.train.exponential_decay(learning_rate_base, global_step, learing_rate_step, learning_rate_decay, staircase=True)
记录了一段时间内模型中所有参数 w 和 b 各自的平均值
利用滑动平均值可以增强模型的泛化能力
计算过程:
ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)
MOVING_AVERAGE_DECAY
表示滑动平均衰减率,一般会赋接近 1 的值global_step
表示当前训练了多少轮ema_op = ema.apply(tf.trainable_variables())
ema.average(参数)
返回参数的滑动平均值
防止过拟合
一般只对参数 W 使用
tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(REGULARIZER)(W))
loss = cem + tf.add_n(tf.get_collection('losses'))
REGULARIZER 是超参数
数据的预处理
placeholder
转载地址:http://ludii.baihongyu.com/