python-3.x - Tensorflow 1.15/Keras 2.3.1 Model.train_on_batch() 返回的值多于输出/损失函数

标签 python-3.x tensorflow keras deep-learning tf.keras

我正在尝试训练一个具有多个输出的模型,因此在编译时也附加了多个损失函数。

我过去没有做过类似的事情(至少不是从头开始)。

这是我用来弄清楚这是如何工作的一些代码。

from tensorflow.keras.layers import Dense, Input
from tensorflow.keras.models import Model

batch_size = 50
input_size = 10

i = Input(shape=(input_size,))
x = Dense(100)(i)
x_1 = Dense(output_size)(x)
x_2 = Dense(output_size)(x)

model = Model(i, [x_1, x_2])

model.compile(optimizer = 'adam', loss = ["mse", "mse"])

# Data creation
x = np.random.random_sample([batch_size, input_size]).astype('float32')
y = np.random.random_sample([batch_size, output_size]).astype('float32')

loss = model.train_on_batch(x, [y,y])

print(loss) # sample output [0.8311912, 0.3519104, 0.47928077]

我希望变量 loss 有两个条目(每个损失函数一个),但是,我得到了三个。我认为也许其中之一是加权平均值,但看起来并非如此。

谁能解释一下传递多个损失函数是如何工作的,因为很明显,我误会了什么。

最佳答案

我相信这三个输出是所有损失的总和,然后是每个输出的个别损失。

例如,如果您查看在那里打印的示例输出:

0.3519104 + 0.47928077 = 0.83119117 ≈ 0.8311912

关于python-3.x - Tensorflow 1.15/Keras 2.3.1 Model.train_on_batch() 返回的值多于输出/损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66674877/

相关文章:

python - Virtualenv 和 Pip 永远挂起

python - 对于相同大小的列表,为什么深复制比浅复制慢得多?

python - Keras 有没有办法立即停止训练?

python - load_data() 在 PC (Windows 10) 上的哪个文件夹中保存 Keras 中的数据集?

python - 查找元组对列表中的第一个元素

python - 如何获取字符串中的名字?

machine-learning - TensorFlow:实现类加权交叉熵损失?

python-3.x - Tensorboard 显示空白页(拒绝从 'http://localhost:6006/index.js' 执行脚本,因为它的 MIME 类型)

tensorflow - Tensorflow 检测 API 中 SSD 检测器的灰度输入图像

python - Keras LocallyConnected1D 层