Итак, в настоящее время я пытаюсь понять, какие форматы ожидает модель с несколькими входами keras, и не понимаю, как использовать несколько форматов.
from tensorflow.keras.models import Model
import tensorflow.keras
import tensorflow as tf
first_input = Input(2)
second_input = Input(2)
concat_layer= Concatenate()([first_input, second_input ])
hidden= Dense(2, activation="relu")(concat_layer)
output = Dense(1, activation="sigmoid")(hidden)
model = Model(inputs=[first_input, second_input], outputs=output)
model.summary()
model.compile(loss='mean_squared_error', metrics=['mean_squared_error'], optimizer='adam')
# I managed to get the format for prediction and single training data correct
# this works
inp = [np.array([[0,2]]), np.array([[0,2]])]
model.predict(inp)
model.fit(inp,np.array([42]), epochs=3, )
# I don´t get why this isn´t working
# this doesn´t work
model.fit(np.array([inp,inp]),np.array([42, 43]), epochs=3, )´
Прочитав документ keras о функции соответствия, я действительно не понимаю, почему моя версия не работает:
x: вектор, матрица или массив обучающих данных (или список, если модель имеет несколько входов). Если все входы в модели названы, вы также можете передать список имен входов, отображающих данные. x может иметь значение NULL (по умолчанию) при подаче из собственных тензоров фреймворка (например, тензоров данных TensorFlow).
Потому что я буквально даю ему массив списков.
Последняя строка кода приводит к следующей ошибке:
ValueError: модель слоя ожидает 2 входных данных, но получила 1 входной тензор. Полученные входные данные: [‹tf.Tensor 'IteratorGetNext: 0' shape = (None, 2, 1, 2) dtype = int64›]
Любая помощь приветствуется.