我通过功能API和模型使用keras共享层。Train_on_batch选项,即
dense_layer = Dense(10, name='dense_1')
out1 = dense_layer(input1)
out2 = dense_layer(input2)
model = Model(input=[input1,input2],output=[out1,out2])
...
model.train_on_batch([x1,x2],[y1,y2])
问题是:如果我执行model.train_on_batch(),样本(x1,y1),(x2,y2)如何混合?
它们是简单地沿着第一个轴连接还是随机混合?
答案都不是。你贴的代码,根据文档:
-
x1
将作为第一个输入-dense_layer.get_input_shape_at(0)
传递,并产生第一个输出dense_layer.get_output_at(0)
-
x2
将作为第二个输入-传递dense_layer.get_input_shape_at(1)
,产生第二个输出dense_layer.get_output_at(1)
实际上,据我所知,这个模型相当于用x1
和x2
串联起来训练dense_layer
,以及单个输入/输出(没有input2
和output2
)
你可以用Merge层将两个输出简化为一个输出。有不同的合并模式,concat
是其中之一。