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

Neural network 如何理解Keras一维卷积输入形状和滤波器,neural-network,time-series,conv-neural-network,forecasting,Neural Network,Time Series,Conv Neural Network,Forecasting,我花了一些时间来理解Keras Conv1D中的input\u shape=(批量大小、步骤、输入尺寸),但到目前为止我没有取得任何进展 更具体地说,我有两个数据集 数据集-1:一年内每天24小时的太阳能生产,因此我的数据集大小为(364,24),天数为行,消耗量为列 2天的示例: 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

我花了一些时间来理解Keras Conv1D中的
input\u shape=(批量大小、步骤、输入尺寸)
,但到目前为止我没有取得任何进展

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

数据集-1:一年内每天24小时的太阳能生产,因此我的数据集大小为(364,24),天数为行,消耗量为列

2天的示例:

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天。 因此,我对数据集进行了如下划分:

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的输入形状兼容,我对训练数据进行了如下重塑:

xtrain = xtrain.reshape(6,1,24)
样本数:6,时间维度:1,输入维度:24

这是正确的想法吗

model.add(Conv1D(**filters?**,kernel_size=4,activation='relu', **input_shape=?**)) 
在我的第二个数据集中:

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)矩阵

Keras代码:

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)

我真的不明白过滤器和输入形状应该是什么。

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

[365,6,24]

第一个维度设置日期

第二个维度设置了时间步长(6天的进度),因此您应该每天对原始数据集进行6:365,然后24小时复制过去的6天

第三个维度是每小时

假设您订购了[1:365,1:24]的原始数据集:

xtrain=np.array(np.tile(xtrain[61]))

xtrain=np.重塑(xtrain,(365,6,24))

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

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)