В настоящее время я сталкиваюсь с концептуальной проблемой: возможно ли в моей архитектуре нейронной сети на основе LSTM выводить результат, отличный от вектора?
Код
Позвольте мне объяснить, у меня есть этот код:
%tensorflow_version 2.x
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense, LSTM
import numpy as np
import tensorflow as tf
# Here I just create some random inputs and outputs corresponding to my pseudo-problem
X = [[np.random.randint(10) for i in range(18)] for j in range(1000)]
X_train = np.array(X)
y = [[np.random.randint(10) for i in range(22)] for j in range(1000)]
y_train = np.array(y)
X = [[np.random.randint(10) for i in range(18)] for j in range(200)]
X_test = np.array(X)
y = [[np.random.randint(10) for i in range(22)] for j in range(200)]
y_test = np.array(y)
# I need to reshape them
X_train = np.reshape(X_train, (1000, 18, 1))
y_train = np.reshape(y_train, (1000, 22))
X_test = np.reshape(X_test, (200, 18, 1))
y_test = np.reshape(y_test, (200, 22))
# I create my model
input_layer = Input(shape=(18,1))
x = LSTM(22)(input_layer)
model = Model(inputs = input_layer, outputs = x)
model.compile(optimizer='adam', # Optimizer
# Loss function to minimize
loss='mse',
# List of metrics to monitor
metrics=['accuracy'])
До тех пор, пока все идет хорошо. Если вы сделаете прогноз = model.predict (X_train), я получу предполагаемую форму выходных данных (1000, 22). Но потом, когда я пытаюсь соответствовать моей модели:
history = model.fit(
X_train,
epochs=10,
validation_data=y_train, validation_steps=20)
Ошибка
Это дает мне ошибку:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Реальная жизнь Задача
I sh, чтобы узнать, как преобразовать вектор (1,18), каждый элемент которого принимает значения от 0 до 50, в вектор (1,22), каждый элемент вектор принимает значения от 0 до 45.
Я имею в качестве входных данных матрицу X = (1000, 18), матрицу y = (1000,22)
Большое спасибо!