Keras为什么不能概括我的数据?

我一直在尝试实现一个基本的多层LSTM回归网络来找出加密电子货币价格之间的相关性。Keras为什么不能概括我的数据?

在遇到无法使用的训练结果后,我决定尝试使用一些沙盒代码,以确保在重试完整数据集之前我已经明白了。

问题是我不能让凯拉斯推广我的数据。

ts = 3 

in_dim = 1

data = [i*100 for i in range(10)]

# tried this, didn't accomplish anything

# data = [(d - np.mean(data))/np.std(data) for d in data]

x = data[:len(data) - 4]

y = data[3:len(data) - 1]

assert(len(x) == len(y))

x = [[_x] for _x in x]

y = [[_y] for _y in y]

x = [x[idx:idx + ts] for idx in range(0, len(x), ts)]

y = [y[idx:idx + ts] for idx in range(0, len(y), ts)]

x = np.asarray(x)

y = np.asarray(y)

X看起来是这样的:

[[[ 0] 

[100]

[200]]

[[300]

[400]

[500]]]

和y:

[[[300] 

[400]

[500]]

[[600]

[700]

[800]]]

这个效果很好,当我预测使用非常相似的数据集,但不会推广的时候我尝试使用缩放值类似的顺序

model = Sequential() 

model.add(BatchNormalization(

axis = 1,

input_shape = (ts, in_dim)))

model.add(LSTM(

100,

input_shape = (ts, in_dim),

return_sequences = True))

model.add(TimeDistributed(Dense(in_dim)))

model.add(Activation('linear'))

model.compile(loss = 'mse', optimizer = 'rmsprop')

model.fit(x, y, epochs = 2000, verbose = 0)

p = np.asarray([[[10],[20],[30]]])

prediction = model.predict(p)

print(prediction)

打印

[[[ 165.78544617] 

[ 209.34489441]

[ 216.02174377]]]

我想

[[[ 40.0000] 

[ 50.0000]

[ 60.0000]]]

我怎么能格式化这个所以,当我在一个序列插头是一个完全不同的刻度值,网络仍然会输出它的预测值?我试着对训练数据进行规范化处理,但结果仍然完全无法使用。

我在这里做了什么错?

回答:

如何在发送到您的LSTM之前转换您的输入数据,使用类似sklearn.preprocessing.StandardScaler?经过预测,你可以打电话给scaler.inverse_transform(预测)

以上是 Keras为什么不能概括我的数据? 的全部内容, 来源链接: utcz.com/qa/263487.html

回到顶部