【发布时间】: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