tf.reduce_mean
求和,然后求平均,得到平均值
功能:计算平均值
计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor的平均值。
语法
reduce_mean(input_tensor,
axis=None,
keep_dims=False,
name=None)
参数
input_tensor: 输入的待降维的tensor
axis: 指定的轴。如果不指定,则计算所有元素的均值
keep_dims:是否降维度,默认False。设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度
name: 操作的名称
示例
self.c_loss = tf.reduce_mean(tf.square(td))
self.a_loss = tf.reduce_mean(-self.exp_v)
代码
# import tensorflow as tf
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
x = tf.constant([3, 5, 2, 1, 5])
y = tf.constant([[7, 4, 2, 4, 3],
[3, 5, 2, 1, 5]]
)
z0 = tf.math.reduce_mean(x)
z1 = tf.math.reduce_mean(x, axis=0, keep_dims=True)
z2 = tf.math.reduce_mean(y, axis=0, keep_dims=True)
z3 = tf.math.reduce_mean(y, axis=1, keep_dims=True)
with tf.Session() as sess:
print('z0:\n', sess.run(z0))
print('z1:\n', sess.run(z1))
print('z2:\n', sess.run(z2))
print('z3:\n', sess.run(z3))
结果
取整【(3+5+2+1+ 5)/5】=【16/5】=3
取整【(3+7)/2】=【10/2】= 5
取整【(4+5)/2】=【9/2】= 4
取整 【(7+4+ 2+4+3)/5】=【20/5】=4
z0:
3
z1:
[3]
z2:
[[5 4 2 2 4]]
z3:
[[4]
[3]]
tf.reduce_mean(tf.squared_difference(self.q_target, self.q_eval))
tf.squared_difference(self.q_target, self.q_eval) 得各对应元素差的平方组成的向量,简称差平方向量。
tf.reduce_mean(tf.squared_difference(self.q_target, self.q_eval)) 将差平方向量求和然后取平均值,即得到DQN的损失函数