try this demo with keras==2.2.4 and tensorflow==1.13.1:
from keras import Sequential, Model
from keras.layers import Embedding, GlobalAveragePooling1D, Dense, concatenate
import numpy as np
model1 = Sequential()
model1.add(Embedding(20, 10, trainable=True))
model1.add(GlobalAveragePooling1D())
model1.add(Dense(1, activation='sigmoid'))
model2 = Sequential()
model2.add(Embedding(20, 10, trainable=True))
model2.add(GlobalAveragePooling1D())
model2.add(Dense(1, activation='sigmoid'))
model_concat = concatenate([model1.output, model2.output], axis=-1)
model_concat = Dense(1, activation='softmax')(model_concat)
model = Model(inputs=[model1.input, model2.input], outputs=model_concat)
model.compile(loss='binary_crossentropy', optimizer='adam')
X_train_source = np.random.randint(0, 20, (10000, 256))
X_train_pod = np.random.randint(0, 20, (10000, 256))
Y_train = np.random.randint(0, 2, 10000)
model.fit([X_train_source, X_train_pod], Y_train, batch_size=1000, epochs=200,
verbose=True)
try this demo with keras==2.2.4 and tensorflow==1.13.1:
from keras import Sequential, Model
from keras.layers import Embedding, GlobalAveragePooling1D, Dense, concatenate
import numpy as np
model1 = Sequential()
model1.add(Embedding(20, 10, trainable=True))
model1.add(GlobalAveragePooling1D())
model1.add(Dense(1, activation='sigmoid'))
model2 = Sequential()
model2.add(Embedding(20, 10, trainable=True))
model2.add(GlobalAveragePooling1D())
model2.add(Dense(1, activation='sigmoid'))
model_concat = concatenate([model1.output, model2.output], axis=-1)
model_concat = Dense(1, activation='softmax')(model_concat)
model = Model(inputs=[model1.input, model2.input], outputs=model_concat)
model.compile(loss='binary_crossentropy', optimizer='adam')
X_train_source = np.random.randint(0, 20, (10000, 256))
X_train_pod = np.random.randint(0, 20, (10000, 256))
Y_train = np.random.randint(0, 2, 10000)
model.fit([X_train_source, X_train_pod], Y_train, batch_size=1000, epochs=200,
verbose=True)