model - 当有多个输出时,如何仅在一个输出上训练网络?

标签 model keras prediction loss multipleoutputs

我在 Keras 中使用多输出模型

model1 = Model(input=x, output=[y2, y3])

model1.compile((optimizer='sgd', loss=cutom_loss_function)

我的custom_loss函数是

def custom_loss(y_true, y_pred):
   y2_pred = y_pred[0]
   y2_true = y_true[0]

   loss = K.mean(K.square(y2_true - y2_pred), axis=-1)
   return loss

我只想在输出y2上训练网络。

使用多个输出时,损失函数中的 y_pred 和 y_true 参数的形状/结构是什么? 我可以按照上面的方法访问它们吗?是 y_pred[0] 还是 y_pred[:,0]

最佳答案

I only want to train the network on output y2.

基于Keras functional API guide你可以通过以下方式实现:

model1 = Model(input=x, output=[y2,y3])   
model1.compile(optimizer='sgd', loss=custom_loss_function,
                  loss_weights=[1., 0.0])

What is the shape/structure of the y_pred and y_true argument in loss function when multiple outputs are used? Can I access them as above? Is it y_pred[0] or y_pred[:,0]

在 keras 多输出模型中,损失函数分别应用于每个输出。在伪代码中:

loss = sum( [ loss_function( output_true, output_pred ) for ( output_true, output_pred ) in zip( outputs_data, outputs_model ) ] )

我似乎无法使用在多个输出上执行损失函数的功能。人们可能可以通过将损失函数合并为网络的一层来实现这一点。

关于model - 当有多个输出时,如何仅在一个输出上训练网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44172165/

相关文章:

python - 收到的标签值 1 超出 [0, 1) 的有效范围 - Python,Keras

python - 使用 3 个月数据集进行多变量时间序列预测

python - Django 获取 "first_name"是此函数的无效关键字参数“创建模型类的实例时出现类型错误

Laravel ClassLoader 试图加载我的模型的旧版本

ruby-on-rails - rails : Update model attribute without invoking callbacks

python - 在附加维度上重复 keras( tensorflow )模型

ruby-on-rails - Ruby on Rails 中多态模型的作用域

machine-learning - 准确率有所提高,但在许多时期内保持不变

python - 我已经实现了一个简单的人工神经网络,但没有得到所需的输出

python - 在 scikit learn 中预测多个值作为模型结果