Я довольно новичок в архитектуре TensorFlow и LSTM. У меня проблема с вычислением входных и выходных данных (x_train, x_test, y_train, y_test) для моего набора данных.
Форма моих входов изначально:
- X_train: (366,4)
- X_test: (104,4)
- Y_train: (366,)
- Y_test: (104,)
Ytrain и Ytest - это серия цен на акции. Xtrain и Xtest - это четыре функции, которые я хочу научить прогнозировать цены на акции.
# Splitting the training and testing data
train_start_date = '2010-01-08'
train_end_date = '2017-01-06'
test_start_date = '2017-01-13'
test_end_date = '2019-01-04'
train = df.ix[train_start_date : train_end_date]
test = df.ix[test_start_date:test_end_date]
X_test = sentimentScorer(test)
X_train = sentimentScorer(train)
Y_test = test['prices']
Y_train = train['prices']
#Conversion in 3D array for LSTM INPUT
X_test = X_test.reshape(1, 104, 4)
X_train = X_train.reshape(1, 366, 4)
model = Sequential()
model.add(LSTM(128, input_shape=(366,4), activation='relu',
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))
opt = tf.keras.optimizers.Adam(lr=0.001, decay=1e-6)
# Compile model
model.compile(
loss='sparse_categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'],
)
model.fit(X_train,
Y_train,
epochs=3,
validation_data=(X_test, Y_test))
Это сгенерированная ошибка:
----------------------------------------------- ---------------------------- ValueError Traceback (последний вызов
последний) в
65 лет,
66 эпох = 3,
---> 67 validation_data = (X_test, Y_test))
C: \ Users \ Талал \ AppData \ Local \ программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ keras \ двигатель \ training.py
в соответствии (self, x, y, batch_size, эпохи, подробности, обратные вызовы,
validation_split, validation_data, shuffle, class_weight,
sample_weight, initial_epoch, steps_per_epoch, validation_steps,
** kwargs) 1507 steps_name = 'steps_per_epoch', 1508 steps = steps_per_epoch,
-> 1509 validation_split = validation_split) 1510 1511 # Подготовить данные проверки.
C: \ Users \ Талал \ AppData \ Local \ программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ keras \ двигатель \ training.py
в _standardize_user_data (self, x, y, sample_weight, class_weight,
batch_size, check_steps, steps_name, steps, validation_split)
991 х, у = следующий_элемент
992 x, y, sample_weights = self._standardize_weights (x, y, sample_weight,
-> 993 class_weight, batch_size)
994 возврат x, y, sample_weights
995
C: \ Users \ Талал \ AppData \ Local \ программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ keras \ двигатель \ training.py
в _standardize_weights (self, x, y, sample_weight, class_weight,
batch_size) 1110 feed_input_shapes, 1111
check_batch_axis = False, # Не применять размер пакета.
-> 1112 exception_prefix = 'input') 1113 1114, если y не None:
C: \ Users \ Талал \ AppData \ Local \ программы \ питон \ python36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ keras \ двигатель \ training_utils.py
в standardize_input_data (данные, имена, формы, check_batch_axis,
exception_prefix)
314 ': ожидается' + имена [i] + 'иметь' +
315 стр (len (форма)) + «размеры, но есть массив»
-> 316 'с формой' + str (data_shape))
317, если не check_batch_axis:
318 data_shape = data_shape [1:]
ValueError: Ошибка при проверке ввода: ожидается, что lstm_18_input будет иметь
3 размера, но получил массив с формой (366, 4)