【发布时间】:2019-06-05 22:31:34
【问题描述】:
我对 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 Y_火车, 66 个 epoch=3, ---> 67 验证数据=(X_test, Y_test))
c:\users\talal\appdata\local\programs\python\python36\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, 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\talal\appdata\local\programs\python\python36\lib\site-packages\tensorflow\python\keras\engine\training.py 在 _standardize_user_data(self, x, y, sample_weight, class_weight, batch_size、check_steps、steps_name、steps、validation_split) 第991章 第992章 --> 993 类重量,批次大小) 第994章 第995章
c:\users\talal\appdata\local\programs\python\python36\lib\site-packages\tensorflow\python\keras\engine\training.py 在 _standardize_weights(self, x, y, sample_weight, class_weight, 批量大小)1110 feed_input_shapes,1111
check_batch_axis=False, # 不强制批量大小。 -> 1112 exception_prefix='input') 1113 1114 如果 y 不是 None:c:\users\talal\appdata\local\programs\python\python36\lib\site-packages\tensorflow\python\keras\engine\training_utils.py 在standardize_input_data(数据,名称,形状,check_batch_axis, 异常前缀) 314 ': 预期 ' + names[i] + ' 有 ' + 315 str(len(shape)) + ' 尺寸,但得到数组 ' --> 316 '带形状' + str(data_shape)) 317 如果不是 check_batch_axis: 第318章
ValueError:检查输入时出错:预期 lstm_18_input 有 3 维,但得到了形状为 (366, 4) 的数组
【问题讨论】:
-
is 366 是一个样本中的时间戳数?
标签: python tensorflow machine-learning neural-network lstm