【发布时间】:2019-01-23 08:52:08
【问题描述】:
我正在尝试在 keras R 中构建一维卷积神经网络以进行时间序列分类。我的训练数据由 1169 个向量组成。其中每个向量包含 30 个时间点并具有分类标签(类别总数为 7,我使用一个热编码对它们进行了编码)。我的代码如下
model<-keras::keras_model_sequential() %>%
layer_conv_1d(filters = 30, kernel_size = 2 , activation = "relu",
input_shape = c(1169, 30), strides = 1L)%>%
layer_max_pooling_1d()%>%
layer_conv_1d(filters = 15, kernel_size = 2, activation = "relu")%>%
layer_max_pooling_1d() %>%
layer_flatten() %>%
layer_dense(7, activation = "softmax")
model %>% compile(
optimizer = "adam",
metrics = 'accuracy',
loss = 'categorical_crossentropy'
)
summary(model)
history<-model %>%
fit(training_data,
training_label,
epochs= 100,
batch_size = 32,
validation_split = 0.3
)
尝试拟合模型后,出现以下错误
Error in py_call_impl(callable, dots$args, dots$keywords) :
ValueError: Error when checking input: expected conv1d_71_input to have
3 dimensions, but got array with shape (1169, 30)
我知道我的问题类似于Keras: convolutional layer for 1D input,但我无法让它发挥作用。首先,我想知道第一个卷积层输出的合适大小应该是多少(有没有好的猜测作为起点)。其次,任何人都可以向我推荐 Keras R 中单维时间序列分类的结构化教程,以便我更详细地以交互方式学习基础理论。不过,我也希望能快速解决上述问题,以便我自己进行实验。
【问题讨论】:
标签: r keras conv-neural-network