我正在嘗試使用 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 的值。
至于參數,你應該了解它們的含義:在這里你可以找到卷積層和最大池化層參數的解釋,如過濾器、內核大小和池大?。壕矸e?層
dropout 層是一種正則化,可以最大化層權重的有效性,每個時期都會將權重的不同百分比(“速率”參數的大?。w零。比率越大,過度擬合的情況就越少,但訓練時間就越長。在這里了解它:?Dropout 層
單位是全連接層的大小。?全連接層
當記錄數不算在內時,輸入形狀是數據的維度。在 1d 向量中,當 N 是向量長度且 C 是您擁有的通道數時,它是 (N,C),如果您有 1 個通道,則它是 (N,1)。在二維向量中它是(高度,寬度,通道)。
添加回答
舉報
0/150
提交
取消