【问题标题】:How the MSE loss calculated for multiple neurons in output layer如何计算输出层中多个神经元的 MSE 损失
【发布时间】:2021-09-18 01:48:19
【问题描述】:

我有一个前馈回归网络(在带有 TensorFlow 后端的 Keras 中),带有单个隐藏层(30 个神经元)和带有 2 个神经元的输出层(用于复杂信号的虚部和实部)......我的问题是 MSE 损失如何是准确计算的吗? 因为我在每个时代的“历史对象”中只得到一个数字。 最终我想在每个时期提取每个输出神经元的单独损失数,在 Keras 中是否可能?

【问题讨论】:

    标签: tensorflow keras neural-network mse


    【解决方案1】:

    每批通过都会计算损失,然后将这些损失平均为一个纪元损失,即给定的数字。

    如果您想单独计算输出神经元的损失,我认为您必须将输出层分成两部分,请参见下图进行说明。然后,您可以为两个输出分配一个损失函数,您将可以访问两个神经元的损失值。请注意,您必须将基本事实拆分为两个值,因为您现在有两个输出而不是一个。

    代码可能如下所示:

    inputs = x = tf.keras.layers.Input(input_shape)
    x = tf.keras.layers.Dense(30)(x)
    y1 = tf.keras.layers.Dense(1)(x)
    y2 = tf.keras.layers.Dense(1)(x)
    model = tf.keras.Model(inputs=inputs, outputs=[y1, y2])
    
    loss = [tf.keras.losses.MeanSquaredError(), tf.keras.losses.MeanSquaredError()]
    

    【讨论】:

    • Dominik 感谢您的建议...我已经有一个具有该拓扑结构的模型,它确实给了我想要的单独损失,但它不适合一个接一个地对两个模型进行排序...对于排序模型,您需要与下一个模型输入层具有相同维度的单个输出层
    • 您可以在之后使用numpy.concatenate 连接输出,或者如果您想制作端到端模型,您可以使用连接层tf.keras.layers.Concatenate
    • 但它仍然给我每个时期只有一个损失值,因为它是单个输出层
    • 你可以把它们作为输出层
    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2021-04-12
    相关资源
    最近更新 更多