Tensorflow 代价函数
Tensorflow cost function
我有一个形状为 (10,1000)、10 个输入和 1000 行的输入数据集 x,以及一个形状为 (1,1000)、1 个输出和 1000 行的输出 y。
我定义的代价函数是
cost = tf.square(Y - prediction, name="cost")
预测是单个预测输出值,Y是输出值的占位符。我使用下面的代码来获取成本的价值。
cost_value = sess.run(cost, feed_dict ={ X: x, Y : y })
那么输出成本函数值是一个(1000,1000)矩阵,因为Y的feed是一个(1,1000)向量。
问题是我如何制作一个成本函数来计算矩阵的某个时刻的成本而不逐行循环所有输入。
tf.reduce_sum(cost)
将对矩阵中的所有值求和。
还有tf.reduce_sum(cost)
就可以了,我觉得用tf.reduce_mean()
比较好。以下是几个原因:
- 无论矩阵大小如何,您都会得到一致的损失。平均而言,对于一个大两倍的矩阵
,你会得到 reduce_sum 大 4 倍
- 通过溢出
获得nan
的机会更少
我有一个形状为 (10,1000)、10 个输入和 1000 行的输入数据集 x,以及一个形状为 (1,1000)、1 个输出和 1000 行的输出 y。
我定义的代价函数是
cost = tf.square(Y - prediction, name="cost")
预测是单个预测输出值,Y是输出值的占位符。我使用下面的代码来获取成本的价值。
cost_value = sess.run(cost, feed_dict ={ X: x, Y : y })
那么输出成本函数值是一个(1000,1000)矩阵,因为Y的feed是一个(1,1000)向量。
问题是我如何制作一个成本函数来计算矩阵的某个时刻的成本而不逐行循环所有输入。
tf.reduce_sum(cost)
将对矩阵中的所有值求和。
还有tf.reduce_sum(cost)
就可以了,我觉得用tf.reduce_mean()
比较好。以下是几个原因:
- 无论矩阵大小如何,您都会得到一致的损失。平均而言,对于一个大两倍的矩阵 ,你会得到 reduce_sum 大 4 倍
- 通过溢出 获得
nan
的机会更少