Try this generator:
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]
Generator for 3 inputs:
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 (add generator, output image and numpy array, and target)
#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]