Я изучаю функциональный API keras и пытаюсь описать «своего рода» остаточную нейронную сеть. Вот как я строю модель:
- Strat с INPUT, как «K_input»,
- Сверните его с ядром 5 * 5 и max_pooling как «CV1»,
- Использование исходного INPUT для выполнения более регулярных конвульсий, например «CV2»,
- Объедините CV1 и CV2 и примените к плотным слоям и классификатору.
- Создайте модель с "keras_model".
Когда он переходит на # 5, он выдает следующее сообщение об ошибке:
Error in py_call_impl(callable, dots$args, dots$keywords) :
ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_2:0", shape=(?, 28, 28, 1), dtype=float32) at layer "input_2". The following previous layers were accessed without issue: []
Что это означает? Я попытался настроить форму CV1 и CV2 на c (14, 14, 16), применив 1D conv к CV1, но это не сработало. Спасибо за совет.
K_input <- layer_input(c(28, 28,1), name = "INPUT")
CV1 <-
K_input %>%
layer_conv_2d(filters = 4, c(5,5), activation = "relu", padding = "same", name = "CV1_CV1") %>%
layer_max_pooling_2d(pool_size = c(2,2), name = "CV1_MX1")
summary(CV1)
#Tensor("CV1_MX1_1/MaxPool:0", shape=(?, 14, 14, 4), dtype=float32)
CV2 <-
K_input %>%
layer_conv_2d(filters = 4, c(3,3), activation = "relu", padding = "same", name = "CV2_CV1") %>%
layer_conv_2d(filters = 8, c(3,3), activation = "relu", padding = "same", name = "CV2_CV2") %>%
layer_conv_2d(filters = 16, c(3,3), activation = "relu", padding = "same", name = "CV2_CV3") %>%
layer_max_pooling_2d(c(2,2), name = "CV2_MX1")
summary(CV2)
#Tensor("CV2_MX1_1/MaxPool:0", shape=(?, 14, 14, 16), dtype=float32)
K _output <-
layer_concatenate(c(CV1, CV2) , name = "OUT_C") %>%
layer_flatten(name = "OUT_FLAT") %>%
layer_dense(units = 32, activation = "relu", name = "OUT_D1") %>%
layer_dense(units = 10, activation = "softmax", name = "OUT_D2")
summary(K_output)
model_API2 <- keras_model(inputs = K_input, outputs = K_output)
# When error msg comes
# Error in py_call_impl(callable, dots$args, dots$keywords) :
# ValueError: Graph disconnected: cannot obtain value for
# tensor Tensor("input_2:0", shape=(?, 28, 28, 1), dtype=float32) at layer "input_2".
# The following previous layers were accessed without issue: []