【问题标题】:Siamese Network using Rstudio Keras使用 Rstudio Keras 的连体网络
【发布时间】:2017-07-24 12:08:44
【问题描述】:

我正在尝试使用 Rstudio Keras 包实现连体网络。我尝试实现的网络与您在this post 中看到的网络相同。

所以,基本上,我将代码移植到 R 并使用 Rstudio Keras 实现。到目前为止,我的代码如下所示:

    library(keras)

    inputShape <- c(105, 105, 1)
    leftInput <- layer_input(inputShape)
    rightInput <- layer_input(inputShape)

    model<- keras_model_sequential()

    model %>%
      layer_conv_2d(filter=64,
                    kernel_size=c(10,10),
                    activation = "relu",
                    input_shape=inputShape,
                    kernel_initializer = initializer_random_normal(0, 1e-2),
                    kernel_regularizer = regularizer_l2(2e-4)) %>%
      layer_max_pooling_2d() %>%

      layer_conv_2d(filter=128,
                    kernel_size=c(7,7),
                    activation = "relu",
                    kernel_initializer = initializer_random_normal(0, 1e-2),
                    kernel_regularizer = regularizer_l2(2e-4),
                    bias_initializer = initializer_random_normal(0.5, 1e-2)) %>%
      layer_max_pooling_2d() %>%

      layer_conv_2d(filter=128,
                    kernel_size=c(4,4),
                    activation = "relu",
                    kernel_initializer = initializer_random_normal(0, 1e-2),
                    kernel_regularizer = regularizer_l2(2e-4),
                    bias_initializer = initializer_random_normal(0.5, 1e-2)) %>%
      layer_max_pooling_2d() %>%

      layer_conv_2d(filter=256,
                    kernel_size=c(4,4),
                    activation = "relu",
                    kernel_initializer = initializer_random_normal(0, 1e-2),
                    kernel_regularizer = regularizer_l2(2e-4),
                    bias_initializer = initializer_random_normal(0.5, 1e-2)) %>%

      layer_flatten() %>%
      layer_dense(4096, 
                  activation = "sigmoid",
                  kernel_initializer = initializer_random_normal(0, 1e-2),
                  kernel_regularizer = regularizer_l2(1e-3),
                  bias_initializer = initializer_random_normal(0.5, 1e-2)) 

    encoded_left <- leftInput %>% model
    encoded_right <- rightInput %>% model

但是,在运行最后两行时,我收到以下错误:

Error in py_call_impl(callable, dots$args, dots$keywords) : 
  AttributeError: 'Model' object has no attribute '_losses'

Detailed traceback: 
  File "/home/rstudio/.virtualenvs/r-tensorflow/lib/python2.7/site-packages/tensorflow/contrib/keras/python/keras/engine/topology.py", line 432, in __call__
    output = super(Layer, self).__call__(inputs, **kwargs)
  File "/home/rstudio/.virtualenvs/r-tensorflow/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 441, in __call__
    outputs = self.call(inputs, *args, **kwargs)
  File "/home/rstudio/.virtualenvs/r-tensorflow/lib/python2.7/site-packages/tensorflow/contrib/keras/python/keras/models.py", line 560, in call
    return self.model.call(inputs, mask)
  File "/home/rstudio/.virtualenvs/r-tensorflow/lib/python2.7/site-packages/tensorflow/contrib/keras/python/keras/engine/topology.py", line 1743, in call
    output_tensors, _, _ = self.run_internal_graph(inputs, masks)
  File "/home/rstudio/.virtualenvs/r-tensorflow/lib/python2.7/site-packages/tensorflow/contrib/keras/python

我一直在 StackOverflow 上查看类似的实现和问题,但我找不到解决方案。我想我可能遗漏了一些非常明显的东西。

有什么办法解决这个问题吗?

【问题讨论】:

  • 这在我的电脑上运行良好。尝试更新 R-keras 包和你的 tensorflow 安装。
  • 哦,快。感谢您花时间测试它。虽然我的安装是最近的,但我会尝试更新,看看我是否可以运行它:)
  • 解决了!谢谢丹尼尔。如果您可以自己重新发布您的建议作为答案,那么我可以将其标记为解决方案。我还没有什么名声,但我应该能够做到这一点...... :)

标签: r tensorflow rstudio keras conv-neural-network


【解决方案1】:

正如 Daniel Falbel 在他的评论中指出的那样,解决方案是更新 R-keras 包,然后更新 tensorflow 安装。

但是,R 中的 tensorflow 包没有安装最新的 1.3 tensorflow 版本(它正在重新安装 1.2 版本)。

要解决此问题,可以将正确版本的 URL 提供给 install_tensorflow 函数。可以在here 找到不同实现的 URL。在这种情况下,我使用的是 Linux。运行此命令应该可以解决遇到相同问题的任何人的问题:

library(tensorflow)
install_tensorflow(package_url = "https://pypi.python.org/packages/b8/d6/af3d52dd52150ec4a6ceb7788bfeb2f62ecb6aa2d1172211c4db39b349a2/tensorflow-1.3.0rc0-cp27-cp27mu-manylinux1_x86_64.whl#md5=1cf77a2360ae2e38dd3578618eacc03b")

【讨论】:

    【解决方案2】:

    我尝试了 GAN,也遇到了这个错误。当我在 tensorflow 的 CPU 版本上使用相同的代码时是可以的,但在 GPU 版本上不是。

    我发现这个问题是在GPU版本上使用kernel_regularizer参数引起的。您可以删除该参数并重试。我不知道为什么这解决了这个问题。我猜这可能是处理重用模型时的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-18
      • 2021-04-12
      相关资源
      最近更新 更多