【问题标题】:How to modify the cost function of Neural Network in python如何在python中修改神经网络的代价函数
【发布时间】:2019-12-13 12:01:09
【问题描述】:

我需要使用包和库为 Python 中的神经网络创建自己的成本函数。例如,我想创建一个成本函数,它是其中一个隐藏层的输出的函数。

scikit-learn 的 Keras 和 MLP 不允许这样做。有更好的包吗?

在 Keras 中,只有当它是预测 y 和实际 y 的函数时,才能修改成本函数。我需要更多的灵活性。

【问题讨论】:

  • 我认为没有多少人考虑过这样做,所以我怀疑任何主要的框架都会有这个功能。但是,如果足够简单,您可以尝试使用 numpy 从头开始​​编写自己的网络。 Tensorflow 可能会让你深入到做类似的事情,但不一定。
  • 我认为@DarthCadeus 是正确的。特别是因为对于这样的误差函数,反向传播算法会有一些重大的变化要实现。您可能必须从头开始编写代码,此外还要练习反向传播背后的数学。

标签: keras scikit-learn neural-network autoencoder loss-function


【解决方案1】:

您可以创建一个辅助输出,例如:

import tensorflow as tf

inp = tf.keras.layers.Input(...)
x1 = tf.keras.layers.Dense(..)(inp)
x2 = tf.keras.layers.Dense(...)(x1)

model = tf.keras.Model(inp, [x1, x2])

model.compile(loss=['loss_for_x1', 'loss_for_x2'], 
              optimizer='rmsprop',
              loss_weights=[1., 1.]) # How many the loss function influences 

您可以将损失直接应用于第一层。

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 2018-05-02
    • 2014-10-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多