gpt4 book ai didi

python - 为 R 中的一维数据运行 CNN 时出错

转载 作者:行者123 更新时间:2023-12-04 08:46:04 26 4
gpt4 key购买 nike

我正在尝试使用 keras 在 R 中运行一维 CNN包裹。我正在尝试使用以下规范创建一维卷积神经网络 (CNN) 架构
enter image description here

library(keras)
library(deepviz)

#create a neural network with a convolutional layer and train the model
model <- 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")
但它给了我以下错误

Error in py_call_impl(callable, dots$args, dots$keywords) :ValueError: Negative dimension size caused by subtracting 4 from 1 for 'conv1d_20/conv1d' (op: 'Conv2D') with input shapes: [?,1,1,128], [1,4,128,256].


如何解决错误?
还有一个问题,如何优化 filters , kernel_size , pool_size , rate , units ?
在我的问题 input_shape=c(100, 10)是一个任意值。如何决定输入大小?

最佳答案

你有太多的 Max-Pooling 层,max pooling 层将输入向量的维度减少了它的参数。
尝试减少 pool_size 参数,或者删除最后 2 个最大池化层。对于所有层,您可以尝试的值是 pool_size=2。
至于参数,你应该了解它们的含义:
在这里您可以找到对卷积层和最大池化层参数(如过滤器、内核大小和池大小)的解释:
Convolutional layer
dropout 层是一种正则化,它最大化层权重的有效性,每个时期它都将权重的不同百分比(“速率”参数的大小)归零。比率越大 - 过拟合越少,但训练时间越长。在这里了解它:
Dropout layer
单位是全连接层的大小。
Fully Connected layer
当记录数不算数时,输入形状是数据的维度。在 1d 向量中它是 (N,C),当 N 是向量长度并且 C 是您拥有的 channel 数时,如果您有 1 个 channel ,则它是 (N,1)。
在 2d 向量中它是 (Height,Width,Channels)。

关于python - 为 R 中的一维数据运行 CNN 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64311427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com