# from keras.models import Model
# from keras import layers
# from keras import Input
#
# text_vocabulary_size = 10000
# question_vocabulary_size = 10000
# answer_vocabulary_size = 500
#
# text_input = Input(shape=(None,), dtype='int32', name='text')
# embedded_text = layers.Embedding(64, text_vocabulary_size)(text_input)
# encoded_text = layers.LSTM(32)(embedded_text)
#
# question_input = Input(shape=(None,),
#                        dtype='int32',
#                        name='question')
# embedded_question = layers.Embedding(32, question_vocabulary_size)(question_input)
# encoded_question = layers.LSTM(16)(embedded_question)
#
# concatenated = layers.concatenate([encoded_text, encoded_question],
#                                   axis=-1)
# answer = layers.Dense(answer_vocabulary_size,
#                       activation='softmax')(concatenated)
#
# model = Model([text_input, question_input], answer)
# model.compile(optimizer='rmsprop',
#               loss='categorical_crossentropy',
#               metrics=['acc'])
#
# print(model.summary())

# import numpy as np
#
# num_samples = 1000
# maxlen = 100
#
# text = np.random.randint(1, text_vocabulary_size,
#                          size = (num_samples, maxlen))
# question = np.random.randint(1, question_vocabulary_size,
#                              size=(num_samples, maxlen))
# answers = np.random.randint(0, 1,
#                             size=(num_samples, answer_vocabulary_size))
#
# model.fit([text, question], answers, epochs=10, batch_size=128)
# # model.fit({'text': text, 'question': question}, answers,
# #           epochs=10, batch_size=128)

from keras.models import Model
from keras import layers
from keras import Input

text_vocabulary_size = 10000
question_vocabulary_size = 10000
answer_vocabulary_size = 500

text_input = Input(shape=(None,), dtype='int32', name='text')
embedded_text = layers.Embedding(
    text_vocabulary_size, 64)(text_input)
encoded_text = layers.LSTM(32)(embedded_text)

question_input = Input(shape=(None,),
                       dtype='int32',
                       name='question')
embedded_question = layers.Embedding(
    question_vocabulary_size, 32)(question_input)
encoded_question = layers.LSTM(16)(embedded_question)

concatenated = layers.concatenate([encoded_text, encoded_question],
                                  axis=-1)

answer = layers.Dense(answer_vocabulary_size,
                      activation='softmax')(concatenated)

model = Model([text_input, question_input], answer)
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['acc'])

print(model.summary())
import numpy as np

num_samples = 1000
max_length = 100

text = np.random.randint(1, text_vocabulary_size,
                         size=(num_samples, max_length))
question = np.random.randint(1, question_vocabulary_size,
                             size=(num_samples, max_length))
answers = np.random.randint(0, 1,
                            size=(num_samples, answer_vocabulary_size))

model.fit([text, question], answers, epochs=10, batch_size=128)
