首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解Keras一维卷积输入形状和滤波器

如何理解Keras一维卷积输入形状和滤波器
EN

Stack Overflow用户
提问于 2017-09-11 04:15:09
回答 1查看 1.3K关注 0票数 4

我花了一些时间来理解Keras Conv1D中的Conv1D,但到目前为止我还不能取得任何进展。

更具体地说,我有两个数据集。

数据集-1:一年中每天24小时的太阳能生产,所以我的数据集的大小是(364,24),天是排的,消耗是列的。

2天的例子:

代码语言:javascript
复制
day-1: [0   0   0   0   0   0   0   1.611   5.791   8.229   9.907   9.649   8.401   6.266   4.728   2.231   0.306   0.013   0   0   0   0   0   0] 
day-2: [0   0   0   0   0   0   0   1.732   5.839   9.909   12.593  14.242  12.744  9.596   5.808   2.019   0.241   0   0   0   0   0   0   0]`

我想用CNN的6天数据来预测第7天。出于这个原因,我将数据集划分如下:

代码语言:javascript
复制
xtrain = dataset[0:6,0:24] # takes 24 hour of 6 days
ytrain = dataset[6,0:24] # takes 24 hour of 7th day
xtest = dataset[1:7,0:24] # takes 24 hours for 6 days (day2 to day7) to predict day 8

为了与Keras的输入形状兼容,我对培训数据进行了如下整形:

代码语言:javascript
复制
xtrain = xtrain.reshape(6,1,24)

样本数: 6,时间维数: 1,input_dimension:24

这个想法正确吗?

代码语言:javascript
复制
model.add(Conv1D(**filters?**,kernel_size=4,activation='relu', **input_shape=?**)) 

在我的第二个数据集中:

代码语言:javascript
复制
Training Data: Xtrain: Day-1 Hour-1 to Hour-24, Day-2 Hour-1 to Hour-24 ... Day-6 Hour-1 to Hour-24
Ytrain: Day-7 Hour-1 to Hour-24

我已经创建了一个新的数据集,它每天在行中花费24小时,在列中花费7天,因此它是一个(8616,7)矩阵。

代码语言:javascript
复制
hour-1 day-1, day-2 ... day-7
hour-2 day-1, day-2 ... day-7
...
hour-24 day-1, day-2 ... day-7
...
hour-1 day-2, day-3 ... day-8
hour-2 day-2, day-3 ... day-8
...
hour-24 day-2, day-3 ... day-8
...
hour-1 day-359, day-360 ... day-365
hour-2 day-359, day-360 ... day-365
...
hour-24 day-359, day-360 ... day-365

Keras代码:

代码语言:javascript
复制
xtrain = dataset[0:24,0:6] # takes 24 hour for 6 days
ytrain = dataset[24:48,6] # takes 24 hour of 7th day
xtest = dataset[24:48,0:6] # takes 24 hours for 6 days (day2 to day7) to predict day 7

xtrain = xtrain[newaxis,:, :]
ytrain = ytrain.reshape(1,24)

我真的不明白过滤器和input_shape应该是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-25 13:10:52

您应该在如下结构中重新格式化数据集:

365,6,24

第一个维度设定了一天。

第二维度设置时间步骤(6天以上的进度),因此您应该在原始数据集6:365的每一天,然后复制过去的6天24小时。

第三维度是每小时一次

假设您的原始数据集为1:365,1:24已排序:

xtrain=np.array(np.tile(xtrain,6 1)) xtrain=np.reshape(xtrain,(365,6,24))

现在,您有了conv1d所需的3D格式(批处理、时间步骤、通道)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46148098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档