为了账号安全,请及时绑定邮箱和手机立即绑定

在 R 中对一维数据运行 CNN 时出错

在 R 中对一维数据运行 CNN 时出错

DIEA 2023-10-26 14:32:03
我正在尝试使用 Rkeras包运行一维 CNN。我正在尝试创建具有以下规范的一维卷积神经网络(CNN)架构library(keras)library(deepviz)#create a neural network with a convolutional layer and train the modelmodel <- keras_model_sequential() %>%  layer_conv_1d(filters=32, kernel_size=4, activation="relu", input_shape=c(100, 10)) %>%  layer_max_pooling_1d(pool_size=2) %>%  layer_conv_1d(filters=64, kernel_size=4, activation="relu") %>%  layer_max_pooling_1d(pool_size=5) %>%  layer_conv_1d(filters=128, kernel_size=4, activation="relu") %>%  layer_max_pooling_1d(pool_size=5) %>%  layer_conv_1d(filters=256, kernel_size=4, activation="relu") %>%  layer_max_pooling_1d(pool_size=5) %>%  layer_dropout(rate=0.4) %>%  layer_flatten() %>%  layer_dense(units=100, activation="relu") %>%  layer_dropout(rate=0.2) %>%  layer_dense(units=1, activation="linear")但它给了我以下错误py_call_impl(callable,dots$args,dots$keywords)中的错误:ValueError:由于输入形状为:[?,1,1,128]的“conv1d_20/conv1d”(op:“Conv2D”)从1中减去4而导致负尺寸大小,[1,4,128,256]。如何解决错误?还有一个问题,如何优化filters、、、、?在我的问题中是一个任意值。如何决定输入大小?kernel_sizepool_sizerateunitsinput_shape=c(100, 10)
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您有太多最大池化层,最大池化层通过其参数减少输入向量的维度。

尝试减少 pool_size 参数,或者删除最后 2 个最大池层。对于所有层,您可以尝试使用 pool_size=2 的值。

至于参数,你应该了解它们的含义:在这里你可以找到卷积层和最大池化层参数的解释,如过滤器、内核大小和池大小:卷积 层

dropout 层是一种正则化,可以最大化层权重的有效性,每个时期都会将权重的不同百分比(“速率”参数的大小)归零。比率越大,过度拟合的情况就越少,但训练时间就越长。在这里了解它: Dropout 层

单位是全连接层的大小。 全连接层

当记录数不算在内时,输入形状是数据的维度。在 1d 向量中,当 N 是向量长度且 C 是您拥有的通道数时,它是 (N,C),如果您有 1 个通道,则它是 (N,1)。在二维向量中它是(高度,宽度,通道)。


查看完整回答
反对 回复 2023-10-26
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信