使用Rstudio Keras的暹罗网络 [英] Siamese Network using Rstudio Keras

查看:76
本文介绍了使用Rstudio Keras的暹罗网络的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Rstudio Keras软件包实现暹罗网络.我尝试实现的网络与您在这篇文章中看到的网络相同.

I'm trying to implement a siamese network using Rstudio Keras package. The network I'm trying to implement is the same network that you can see in this post.

因此,基本上,我将代码移植到R并使用Rstudio Keras实现.到目前为止,我的代码如下:

So, basically, I'm porting the code to R and using Rstudio Keras implementation. So far my code looks like this:

    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

但是,在运行最后两行时,出现以下错误:

However, when running the last two lines, I get the following error:

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上研究类似的实现和问题,但是找不到解决方案.我想我可能会遗漏一些非常明显的东西.

I have been looking at similar implementations and questions all over StackOverflow, but I could not find a solution. I think I might be missing something really obvious.

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

Any ideas how to solve this?

推荐答案

正如Daniel Falbel在其评论中指出的,解决方案是先更新R-keras软件包,然后再更新tensorflow安装.

As pointed out by Daniel Falbel in his comment, the solution was updating R-keras package and then updating the tensorflow installation.

但是,R中的tensorflow软件包未安装最新的1.3 tensorflow版本(它正在重新安装1.2版本).

However, tensorflow package in R was not installing the latest 1.3 tensorflow version (it was reinstalling the 1.2 version).

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

To fix this problem, the URL to the correct version can be supplied to the install_tensorflow function. The URLs for the different implementations can be found here. I was using Linux in this case. Running this command should solve the problem for anyone who comes across the same issue:

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")

这篇关于使用Rstudio Keras的暹罗网络的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆