我对TensorFlow和LSTM架构相当陌生。我在计算数据集的输入和输出(x_train、x_test、y_trainy_test)时遇到了问题。
我最初输入的形状:
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回溯(最近一次呼叫最后一次)在65辆Y_列车中,66个时代=3---
c:\users\talal\appdata\local\programs\python\36\lib\site packages\tensorflow\python\keras\engine\training.py in fit(self、x、y、批大小、历元、冗余、回调、验证分割、验证数据、洗牌、类权重、样本权重、初始历元、每个历元的步骤、验证步骤、**kwargs)1507个步骤,1508步=每个历元的步数-
C:\用户\talal\appdata\本地\程序\python\python36\lib\site-包\tensorflow\python\keras\引擎\training.py_standardize_user_data(自我,x,y,sample_weight,class_weight,batch_size,check_steps,steps_name,步骤,validation_split)991 x,y=next_element992 x,y,sample_weights=自我。_standardize_weights(x, y,sample_weight,--
c:\users\talal\appdata\local\programs\python36\lib\site packages\tensorflow\python\keras\engine\training.py in\u-standard\u-weights(self、x、y、sample\u-weight、class\u-weight、batch\u-size)1110进给输入形状,1111
检查批处理轴=False,不强制执行批处理大小-
C:\用户\talal\appdata\本地\程序\python\python36\lib\site-包\tensorflow\python\keras\引擎\training_utils.py在standardize_input_data(数据,名称,形状,check_batch_axis,exception_prefix)314:预期的名称[i]具有315 str(len(形状))'尺寸,但有数组'-
ValueError:检查输入时出错:预期lstm_18_输入有3个维度,但得到了具有形状的数组(366,4)
>
LSTM希望DIM的输入为(num_示例、seq_长度、input_dims),因此输入中有一个错误。
您正在预测维度1的输出,模型输出为10。试试这个。
model.add(密集(1,activation='linear'))
另外,你在预测价格,这是回归问题。但是,您正在使用分类设置。试试这个
model.compile(loss='mse',optimizer='adam',metrics=['mean\u squared\u error'])
X_train的尺寸错误。LSTM仅接受三维输入。您的意思是您有4个功能。假设366是一个样本的时间戳数,那么您的输入应该是(num_samples,366,4)shape cheers:-)
你的代码几乎是好的。
您的y_测试
和y_序列
应该是一个具有一个元素或形状(1,1)的数组,这无关紧要。
您输入的形状是错误的,第一个LSTM应该是:
model.add(LSTM(128, input_shape=(None,4), activation='relu', return_sequences=True))
请注意None
,由于测试序列和训练序列长度不同,您不能指定它(并且Keras接受未指定的第一维度)。错误是由于长度分别为366和104。如果您想使用带有RNN的批处理,您应该使用keras.preprocessing.sequence.pad\u sequences
执行零填充。
无需指定批处理的input\u shape
,网络的其余部分应该可以。
如果您正在执行回归,而不是分类(可能是这种情况),那么您应该执行@Ankish Bansal编写的最后两个步骤,例如,将损失更改为均方误差
,并使最后一层输出1而不是10。
我试图用PyTorch LSTM训练一个简单的2层神经网络,但我很难解释PyTorch留档。具体来说,我不太确定如何处理我的训练数据。 我想做的是通过小批次在一个非常大的数据集上训练我的网络,每个批次有100个元素长。每个数据元素将具有5个特征。留档声明层的输入应该是形状(seq_len,batch_size,input_size)。我应该如何调整输入? 我一直在关注这篇文章:https://di
问题内容: 我试图使用keras训练LSTM模型,但我认为这里出了点问题。 我有一个错误 ValueError:检查输入时出错:预期lstm_17_input具有3个维,但数组的形状为(10000,0,20) 虽然我的代码看起来像 其中已的形状和前几个数据点像 并且具有这样的形状的,它是二进制(0/1)标签阵列。 有人可以指出我在哪里错了吗? 问题答案: 为了完整起见,这是发生了什么。 首先,像K
我正在实现一个三维卷积神经网络,我有两个问题。 问题一 每个输入是一个大小为(201,10,4)的3D矩阵。我希望我的过滤器能够在第二和第三维度上移动,因为它们是完全连接的。第三个维度是特征维度。所以我不想看第二和第三维度的当地社区。因此,我的过滤器大小将是例如(3,10,4)的大小。所以过滤器大小等于第二和第三维度,但我们在第一维度中有权重共享。以下是我的卷积代码: 所以我应该在这里使用步幅,这
问题内容: 我正在尝试使用Keras实施LSTM。 我知道Keras中的LSTM需要3D张量与形状作为输入。但是,我不能完全确定输入在我的情况下的样子,因为我对每个输入只有一个观察样本,而不是多个样本,即。将我的每个输入分成长度样本是否更好?对我而言,大约有几百万个观测值,因此在这种情况下,每个样本应保留多长时间,即我将如何选择? 另外,我是对的,这个张量应该看起来像: 其中M和N如前所述,x对应
我正在开发一种卷积神经网络用于图像分类或更好的车牌分类。这些车牌最多包含8个字符,每个字符可以包含37个字符(A-Z、0-9和空格)。我现在想知道如何设计网络中的最后两层。我认为,最后一个必须是具有37个概率的softmax层。这应该完全连接到一个(?)神经元在前一层?我想,在前一层我们需要8个神经元,因为之前的车牌上有8个字符,但我不确定。在此层之前,我添加了一些卷积层和maxPooling层。
使用网格的列来设置输入框的大小,如 .large-6, .medium-6, 等。 更多网格系统知识,可以点击 相等大小列 以下演示了相等大小列的实例: 实例<form> <div> <div> <label>medium-4 (100% on small, stacked) <input type="text" placeholder="Name">