【问题标题】:keras flow and backpropagationkeras 流和反向传播
【发布时间】:2018-03-24 18:39:20
【问题描述】:

我在任何地方都找不到 Keras 中的反向传播到底是如何完成的?让我解释一下:

假设我有网络

input = Input(shape=(X,X,Y))
x = Conv2D(32,(3,3),padding="same")(input)
x = Conv2D(64,(3,3),padding="same")(x)
x = Conv2D(128,(3,3),padding="same")(x)
x = Conv2D(64,(3,3),padding="same")(x)
Output = Flatten(1024)(x)
Output = Flatten(6)(Output)
model = Model(input,Output)
model.compile(loss="mean_squared_error", optimizer=keras.optimizers.Adam(),metrics=['accuracy'])
model.fit(trainingData,trainingLabels)

最后一层的输出与trainingLabels进行比较,计算mean squared error并根据mean squaed error的值进行反向传播

但是,如果我想要更多的东西怎么办。例如,我想尝试输出向量的每一个排列,导致最小mean squared error 的那个应该被视为输出,因此反向传播基于错误最小的排列发生。

这样的事情在 Keras 中可能吗?如果是这样,我该如何实现它

【问题讨论】:

    标签: python neural-network keras artificial-intelligence


    【解决方案1】:

    model.compile 方法的 loss 参数接受 python 函数。您可以在自定义函数中计算一组排列的最小值:

    def custom_loss(y_true, y_predicted):
        ''' code here '''
    

    然后将其传递给model.compile:

    model.compile(loss=custom_loss, 
                  optimizer=keras.optimizers.Adam(),
                  metrics=['accuracy'])
    

    请参阅 here 和 here 以供参考。

    【讨论】:

      猜你喜欢
      • 2018-05-05
      • 2022-10-30
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多