現在、this pageで定義されているRCLレイヤを実装しています。テンソルを一緒に追加できないのはなぜですか?
import keras
from keras.models import Model
from keras.layers import Input, Dense, Dropout, Flatten
from keras.layers import merge, Conv2D, MaxPooling2D, Input
import numpy as np
from keras import backend as K
# RCL:
# BatchNorm(Relu(conv(L-1) + conv(L)))
#
def make_RCNN(dim_1,dim_2,dim_3,number_of_rcl,num_of_filter, filtersize):
return True
def RCL(feed_forward_input,num_of_filter, filtersize):
conv = Conv2D(filters=num_of_filter, kernel_size=filtersize)
recurrent_input = conv(feed_forward_input)
merged = merge([feed_forward_input,recurrent_input],mode='sum')
conv_relu = Relu(merged)
conv_relu_batchnorm = BatchNormalization()(conv_relu)
return conv_relu_batchnorm
input = Input(shape=(30,30,3))
output = RCL(feed_forward_input=input,num_of_filter=3,filtersize=3)
と私はエラーメッセージを取得しています:
python RCNN.py
Using TensorFlow backend.
Couldn't import dot_parser, loading of dot files will not be possible.
RCNN.py:22: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.
merged = merge([feed_forward_input,recurrent_input],mode='sum')
/usr/local/lib/python2.7/dist-packages/keras/legacy/layers.py:460: UserWarning: The `Merge` layer is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.
name=name)
Traceback (most recent call last):
File "RCNN.py", line 28, in <module>
output = RCL(feed_forward_input=input,num_of_filter=3,filtersize=3)
File "RCNN.py", line 22, in RCL
merged = merge([feed_forward_input,recurrent_input],mode='sum')
File "/usr/local/lib/python2.7/dist-packages/keras/legacy/layers.py", line 460, in merge
name=name)
File "/usr/local/lib/python2.7/dist-packages/keras/legacy/layers.py", line 111, in __init__
node_indices, tensor_indices)
File "/usr/local/lib/python2.7/dist-packages/keras/legacy/layers.py", line 155, in _arguments_validation
'Layer shapes: %s' % input_shapes)
ValueError: Only layers of same output shape can be merged using sum mode. Layer shapes: [(None, 30, 30, 3), (None, 28, 28, 3)]
をそれだけでRCLの誤解も生じさせることができ、実際に問題はどれ...形状は同じではないことを言います..
しかし、私が理解から、またここで定義され
私が実装したのは、前のレイヤー(フィードフォワードテンソル)からテンソルをとり、そのテンソル(恒久的なテンソル)に畳み込みを適用するRCLです。これらの2つのテンソルは、 z_ijk(t)方程式。この後に、方程式のように計算された両方のテンソルの合計は、畳み込みフィードフォワード入力=再帰入力は同じサイズではないという意味で意味があります。 2つのテンソル、それらのサイズが同じでないときは? RCLメソッドは次のようになりますので、
それはそれを修正します...しかし実際には正しい解決策であればわかりません..紙にはパディングに関連するものは何も言及されていません..これは一種の汚れ修正です。 – Lamda
パディングは畳み込みネットワークのための標準的な技術であり、論文はそれを言いたいとは思わないかもしれません。このエラーは、コンボリューション・レイヤーが入力テンソルを(28,28,3)にサイズ変更していることを示しています。これは、コンボリューション・フィルターのサイズが3x3であるために起こります。画像の端から外れている)。パディングは、入力と出力が同じサイズになるように、外側にゼロのマージンを追加するだけです。 [This](http://cs231n.github.io/convolutional-networks/#convolutional-layer)はそれをうまく説明しています。 – JAustin