Я пытаюсь написать следующий код python в R, используя keras и tensorflow, как подробно описано в информации о сеансе ниже:
def loadVggFaceModel():
model = Sequential()
model.add(ZeroPadding2D((1,1),input_shape=(224,224, 3)))
model.add(Convolution2D(64, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Convolution2D(4096, (7, 7), activation='relu'))
model.add(Dropout(0.5))
model.add(Convolution2D(4096, (1, 1), activation='relu'))
model.add(Dropout(0.5))
model.add(Convolution2D(2622, (1, 1)))
model.add(Flatten())
model.add(Activation('softmax'))
#you can download pretrained weights from https://drive.google.com/file/d/1CPSeum3HpopfomUEK1gybeuIVoeJT_Eo/view?usp=sharing
from keras.models import model_from_json
model.load_weights('vgg_face_weights.h5')
vgg_face_descriptor = Model(inputs=model.layers[0].input, outputs=model.layers[-2].output)
return vgg_face_descriptor
Я пытался реализовать его в R, но застрял на первый уровень: layer_zero_padding_2d
, так как у него нет аргумента input_shape
.
model <-
keras_model_sequential() %>%
layer_zero_padding_2d(
padding = c(1L, 1L),
input_shape = c(224, 224, 3)
)
Error in layer_zero_padding_2d(., padding = c(1L, 1L), input_shape = c(224, :
unused argument (input_shape = c(224, 224, 3))
Я запустил код python, и он работал нормально. Я проверил документацию python, и там нет слоя от input_shape
до ZeroPadding2D
, поэтому я заключил input_shape
в список, но безуспешно
keras_model_sequential() %>%
layer_zero_padding_2d(
padding = c(1, 1),
list(input_shape = c(224, 224, 3))
)
Error in py_call_impl(callable, dots$args, dots$keywords) :
AttributeError: 'dict' object has no attribute 'lower'
Наконец, я попробовал layer_zero_padding_2d(batch_size = c(224, 224, 3))
, и он работал нормально, но когда я запускаю
model$load_weights("vgg_face_weights.h5")
vgg_face_descriptor <-
keras_model(
inputs = c(224,224,3),
outputs = model$layers[1:36]
)
, я получаю эту ошибку
Error in py_call_impl(callable, dots$args, dots$keywords) :
AttributeError: 'ZeroPadding2D' object has no attribute 'op'
python конфигурация
reticulate::py_config()
python: /home/moh/.local/share/r-miniconda/envs/r-reticulate/bin/python
libpython: /home/moh/.local/share/r-miniconda/envs/r-reticulate/lib/libpython3.6m.so
pythonhome: /home/moh/.local/share/r-miniconda/envs/r-reticulate:/home/moh/.local/share/r-miniconda/envs/r-reticulate
version: 3.6.10 |Anaconda, Inc.| (default, May 8 2020, 02:54:21) [GCC 7.3.0]
numpy: /home/moh/.local/share/r-miniconda/envs/r-reticulate/lib/python3.6/site-packages/numpy
numpy_version: 1.18.1
информация о сеансе:
R version 4.0.0 (2020-04-24)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.4 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /home/moh/.local/share/r-miniconda/envs/r-reticulate/lib/libmkl_rt.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=ar_SA.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=ar_SA.UTF-8
[6] LC_MESSAGES=en_US.UTF-8 LC_PAPER=ar_SA.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=ar_SA.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.12.8 ggmap_3.0.0 forcats_0.5.0 stringr_1.4.0 readr_1.3.1 tidyr_1.1.0
[7] tidyverse_1.3.0.9000 yardstick_0.0.6.9000 workflows_0.1.1 tune_0.1.0 tibble_3.0.1 rsample_0.0.6
[13] recipes_0.1.12 purrr_0.3.4 parsnip_0.1.1 infer_0.5.1 ggplot2_3.3.0 dplyr_0.8.99.9003
[19] dials_0.0.6 scales_1.1.1 broom_0.5.6 tidymodels_0.1.0 tensorflow_2.2.0.9000 keras_2.3.0.0.9000
loaded via a namespace (and not attached):
[1] readxl_1.3.1 backports_1.1.7 tidytext_0.2.4 plyr_1.8.6 igraph_1.2.5 sp_1.4-2
[7] splines_4.0.0 crosstalk_1.1.0.1 listenv_0.8.0 tfruns_1.4 SnowballC_0.7.0 usethis_1.6.1
[13] rstantools_2.0.0 inline_0.3.15 digest_0.6.25 foreach_1.5.0 htmltools_0.4.0 rsconnect_0.8.16
[19] fansi_0.4.1 memoise_1.1.0 magrittr_1.5 remotes_2.1.1 globals_0.12.5 modelr_0.1.8
[25] gower_0.2.1 matrixStats_0.56.0 xts_0.12-0 prettyunits_1.1.1 jpeg_0.1-8.1 colorspace_1.4-1
[31] rappdirs_0.3.1 rvest_0.3.5 haven_2.2.0 xfun_0.14 callr_3.4.3 crayon_1.3.4
[37] jsonlite_1.6.1 lme4_1.1-23 zeallot_0.1.0 survival_3.1-12 zoo_1.8-8 iterators_1.0.12
[43] glue_1.4.1 gtable_0.3.0 ipred_0.9-9 pkgbuild_1.0.8 rstan_2.19.3 DBI_1.1.0
[49] miniUI_0.1.1.1 Rcpp_1.0.4.6 xtable_1.8-4 reticulate_1.15-9000 GPfit_1.0-8 stats4_4.0.0
[55] lava_1.6.7 StanHeaders_2.19.2 prodlim_2019.11.13 DT_0.13 httr_1.4.1 htmlwidgets_1.5.1
[61] threejs_0.3.3 ellipsis_0.3.1 pkgconfig_2.0.3 loo_2.2.0 dbplyr_1.4.3 nnet_7.3-14
[67] tidyselect_1.1.0 rlang_0.4.6 DiceDesign_1.8-1 reshape2_1.4.4 later_1.0.0 cellranger_1.1.0
[73] munsell_0.5.0 tools_4.0.0 cli_2.0.2 generics_0.0.2 devtools_2.3.0 ggridges_0.5.2
[79] fastmap_1.0.1 fs_1.4.1 processx_3.4.2 knitr_1.28 RgoogleMaps_1.4.5.3 packrat_0.5.0
[85] future_1.17.0 nlme_3.1-147 whisker_0.4 mime_0.9 rstanarm_2.19.3 xml2_1.3.2
[91] tokenizers_0.2.1 compiler_4.0.0 bayesplot_1.7.1 shinythemes_1.1.2 rstudioapi_0.11 curl_4.3
[97] png_0.1-7 testthat_2.3.2 reprex_0.3.0 tidyposterior_0.0.2 lhs_1.0.2 statmod_1.4.34
[103] stringi_1.4.6 ps_1.3.3 desc_1.2.0 lattice_0.20-41 Matrix_1.2-18 nloptr_1.2.2.1
[109] markdown_1.1 shinyjs_1.1 vctrs_0.3.0 pillar_1.4.4 lifecycle_0.2.0 furrr_0.1.0
[115] bitops_1.0-6 httpuv_1.5.2 R6_2.4.1 promises_1.1.0 gridExtra_2.3 janeaustenr_0.1.5
[121] sessioninfo_1.1.1 codetools_0.2-16 pkgload_1.0.2 boot_1.3-25 colourpicker_1.0 MASS_7.3-51.6
[127] gtools_3.8.2 assertthat_0.2.1 rprojroot_1.3-2 rjson_0.2.20 withr_2.2.0 shinystan_2.5.0
[133] hms_0.5.3 parallel_4.0.0 grid_4.0.0 rpart_4.1-15 timeDate_3043.102 class_7.3-17
[139] minqa_1.2.4 pROC_1.16.2 tidypredict_0.4.5 shiny_1.4.0.2 lubridate_1.7.8 base64enc_0.1-3
[145] dygraphs_1.1.1.6