试试这个生成器:
def generator_two_img(X1, X2, y, batch_size):
genX1 = gen.flow(X1, y, batch_size=batch_size, seed=1)
genX2 = gen.flow(X2, y, batch_size=batch_size, seed=1)
while True:
X1i = genX1.next()
X2i = genX2.next()
yield [X1i[0], X2i[0]], X1i[1]
3 个输入的发生器:
def generator_three_img(X1, X2, X3, y, batch_size):
genX1 = gen.flow(X1, y, batch_size=batch_size, seed=1)
genX2 = gen.flow(X2, y, batch_size=batch_size, seed=1)
genX3 = gen.flow(X3, y, batch_size=batch_size, seed=1)
while True:
X1i = genX1.next()
X2i = genX2.next()
X3i = genX3.next()
yield [X1i[0], X2i[0], X3i[0]], X1i[1]
EDIT(添加生成器、输出图像和 numpy 数组以及目标)
#X1 is an image, y is the target, X2 is a numpy array - other data input
def gen_flow_for_two_inputs(X1, X2, y):
genX1 = gen.flow(X1,y, batch_size=batch_size,seed=666)
genX2 = gen.flow(X1,X2, batch_size=batch_size,seed=666)
while True:
X1i = genX1.next()
X2i = genX2.next()
#Assert arrasy are equal - this was for peace of mind, but slows down training
#np.testing.assert_array_equal(X1i[0],X2i[0])
yield [X1i[0], X2i[1]], X1i[1]