【发布时间】:2020-05-11 12:31:58
【问题描述】:
我正在使用带有 tensorflow 后端的 keras 中的人工神经网络进行回归学习。
我的输入形状是 [100,3]([no of samples,no of features])。
我的输出形状是 [100,3] ([no of samples,no of outputs])。
我想在每个输入样本旁边传递一个 4 维数据(此数据的形状将是 [100,4]),以便我可以访问它来编写自定义损失函数。我不希望它参与培训过程。
类似这样的:
def wrapper(input_tensor):
def custom_loss(y_true, y_pred):
return binary_crossentropy(y_true, y_pred) + mean(last 4 elements of the input_tensor)
return custom_loss
我对函数式 API 以及如何将 keras 与多个输入和多个输出一起使用来训练网络进行了大量研究。但是,由于我不希望它参与训练阶段并且仍然需要传递到自定义损失函数 - 我认为它不会达到我的目的。
我解决这个问题的直觉:
1. 将 4 维数据附加到输入,在训练网络时屏蔽这 4 个输入神经元,仅将输入层的一部分(不包括最后 4 个元素)传递到下一层。
- 问题是,我认为我们不能像这样掩盖神经元。
2. 使用功能 API 将 4 维数据作为网络的附加输入。
- 问题是,我无法将 4 维数据传递给自定义损失函数,而不涉及到训练过程。
谁能帮我解决这个问题? 如果需要任何额外信息,请告诉我。
我认为,即使是这个问题 - How to use part of inputs for training but rest for loss function in Keras 也符合我的需要。但是,没有回答:(
【问题讨论】:
标签: tensorflow keras neural-network tf.keras