推理过程中损耗层有什么作用?在正向传播期间要清楚

时间:2019-07-15 05:32:49

标签: tensorflow conv-neural-network

我有一个模型,该模型使用大量的ops来损失l2。最终,这超过了mul和增加操作的数量。我想知道是否可以删除它们?如果不是,为什么

1 个答案:

答案 0 :(得分:0)

推理是指使用受过训练的深度学习算法进行预测的过程。因此,在这段时间内,网络会执行分类,识别和处理新输入的信息。

与网络训练开始之前一样,在卷积和完全连接的层中的权重被赋予随机值。

然后,在训练过程中,损失层会根据实际值连续检查全连接层的猜测,以最大程度地减小猜测与实际值之间的差异。

损耗层通过使用loss function来调整卷积层和完全连接层中的权重来实现此目的,否则我们可能会遇到OverfittingUnderfitting问题。没有损失功能,很难衡量网络/模型的性能。

通常,在大多数情况下,首选L2损失函数。

我想,如果您是在模型中手动计算L2 loss,我建议使用以下Tensorflow函数

def loss(target_y, predicted_y):
  return tf.reduce_mean(tf.square(target_y - predicted_y))

此处显示了如何使用L2 loss在TF 1.x中执行Session

%tensorflow_version 1.x
import tensorflow as tf

graph = tf.Graph()
session = tf.InteractiveSession(graph=graph)

y = tf.constant([[1,2],[3,4]],dtype= tf.float32)
p = tf.constant([[0,1],[4,5]],dtype= tf.float32)

mse=tf.nn.l2_loss(y - p)

mse_eval= session.run(mse)
print(mse_eval)

session.close()

输出:

2.0