【发布时间】:2021-06-14 21:31:21
【问题描述】:
我正在尝试训练一个具有多个输出的模型,因此在我编译它时也附加了多个损失函数。
我过去没有做过类似的事情(至少不是从头开始)。
这是我用来弄清楚它是如何工作的一些代码。
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 有两个条目(每个损失函数一个),但是我得到三个。我认为其中一个可能是加权平均数,但事实并非如此。
谁能解释传入多个损失函数的工作原理,因为很明显,我误解了一些东西。
【问题讨论】:
标签: python-3.x tensorflow keras deep-learning tf.keras