小编The*_* H.的帖子

如何使用Keras/Theano for Regression配置一个非常简单的LSTM

我正在努力为简单的回归任务配置Keras LSTM.官方页面上有一些非常基本的解释:Keras RNN文档

但要完全理解,带有示例数据的示例配置将非常有用.

我几乎没有找到使用Keras-LSTM进行回归的示例.大多数示例都是关于分类(文本或图像).我研究了Keras发行版附带的LSTM示例和我通过Google搜索找到的一个示例:http://danielhnyk.cz/它提供了一些见解,尽管作者承认这种方法的内存效率非常低,因为数据样本必须非常冗余地存储.

虽然评论员(Taha)引入了一项改进,但数据存储仍然是多余的,我怀疑这是Keras开发人员的意图.

我已经下载了一些简单的示例顺序数据,这些数据恰好是来自雅虎财经的股票数据.它可以从雅虎财经数据免费获得

Date,       Open,      High,      Low,       Close,     Volume,   Adj Close
2016-05-18, 94.160004, 95.209999, 93.889999, 94.559998, 41923100, 94.559998
2016-05-17, 94.550003, 94.699997, 93.010002, 93.489998, 46507400, 93.489998
2016-05-16, 92.389999, 94.389999, 91.650002, 93.879997, 61140600, 93.879997
2016-05-13, 90.00,     91.669998, 90.00,     90.519997, 44188200, 90.519997
Run Code Online (Sandbox Code Playgroud)

该表包含8900多条此类Apple股票数据.每天有7列=数据点.要预测的值是"AdjClose",这是一天结束时的值

因此,目标是根据前几天的顺序预测第二天的AdjClose.(这可能几乎是不可能的,但总是很高兴看到工具在具有挑战性的条件下如何表现.)

我认为这应该是LSTM非常标准的预测/回归情况,并且可以轻松转移到其他问题域.

那么,如何格式化数据(X_train,y_train)以实现最小冗余,以及如何仅使用一个LSTM层和几个隐藏神经元来初始化Sequential模型?

亲切的问候,西奥

PS:我开始编码:

...
X_train
Out[6]: 
array([[  2.87500000e+01,   2.88750000e+01,   2.87500000e+01,
      2.87500000e+01,   1.17258400e+08,   4.31358010e-01],
   [  2.73750019e+01,   2.73750019e+01,   2.72500000e+01,
      2.72500000e+01,   4.39712000e+07,   4.08852011e-01],
   [  2.53750000e+01,   2.53750000e+01,   2.52500000e+01,
      2.52500000e+01,   2.64320000e+07,   3.78845006e-01], …
Run Code Online (Sandbox Code Playgroud)

regression theano lstm keras

7
推荐指数
1
解决办法
8449
查看次数

用于输出的 Keras 2D 密集层

我正在玩一个模型,该模型应该以 8x8 棋盘作为输入,编码为 224x224 灰度图像,然后输出 64x13 单热编码逻辑回归 = 方块上棋子的概率。

现在,在卷积层之后,我不太知道如何继续获取 2D 密集层作为结果/目标。

我尝试将 Dense(64,13) 作为层添加到我的顺序模型中,但收到错误“Dense` 只能接受 1 个位置参数 ('units',)”

是否有可能针对 2D 目标进行训练?

EDIT1:这是我的代码的相关部分,经过简化:

# X.shape = (10000, 224, 224, 1)
# Y.shape = (10000, 64, 13)

model = Sequential([
    Conv2D(8, (3,3), activation='relu', input_shape=(224, 224, 1)),
    Conv2D(8, (3,3), activation='relu'),

    # some more repetitive Conv + Pooling Layers here

    Flatten(),

    Dense(64,13)
])
Run Code Online (Sandbox Code Playgroud)

TypeError:Dense只能接受 1 个位置参数 ('units',),但您传递了以下位置参数:[64, 13]

EDIT2:正如 Anand V. Singh 所建议的,我将 Dense(64, 13) 更改为 Dense(832),效果很好。损失=均方误差。

使用“sparse_categorical_crossentropy”作为损失和 64x1 编码(而不是 64x13)不是更好吗?

sequential conv-neural-network keras-layer

4
推荐指数
1
解决办法
1万
查看次数