1
weights = { 
    # 5x5 conv, 1 input, 32 outputs 
    'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])), 
    # 5x5 conv, 32 inputs, 64 outputs 
    'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])), 
    # fully connected, 7*7*64 inputs, 1024 outputs 
    'wd1': tf.Variable(tf.random_normal([7*7*64, 1024])), 
    # 1024 inputs, 10 outputs (class prediction) 
    'out': tf.Variable(tf.random_normal([1024, num_classes])) 
} 

私の質問は: はどのように私はそれが第三第二の最初の層では32、64および1024です。この場合には、機能/チャネル出力の数を計算するのですか?そして、私がCNNに32,64,1024以上の数を加えた場合、どのような効果がありますか?このCNNモデルのCNN:理解重み出力チャネル引数

答えて

1

制限は以下の通りである:

  • 7x7は、入力画像のサイズによって決定されます。この場合、2つのダウンサンプリング(プーリング)操作後には28x28になります。
  • convレイヤのフィーチャの数(32,64)は任意ですが、次のレイヤの深さの値に対応する必要があります。したがって、3248に変更した場合は、32から48wc2に変更する必要があります。
  • FC層のサイズと同じ約1024は、wd11024outに対応させる必要があります。それはやネットワークのパフォーマンスを向上させるかもしれないけれどもこれ以外

は、あなたが、任意の値を設定することができます。多くの場合、より大きなモデルはよりよく学習する傾向があるため、研究はできるだけ大きなものを設定して、モデルがGPUメモリに適合するようにします。また、学習されたフィーチャの複雑さを捕らえるために、早い層からさらに下にサイズを大きくすること、すなわち第2の層の品種が第1の層よりも大きくなることが理にかなっている。

1

例えば、 32,64,128,1024は設計上の決定であり、モデル設計者は使用するフィルタの数を決定する。この場合、あなた。典型的には、2の累乗は2^5 = 32,2^6 = 64などで使用されます。異なる数のフィルタは、モデルが必要とするパラメータの数に影響を与えるだけでなく、計算に必要な操作の数に明らかに影響します学ぶ。

5×5×1の次元(高さ×幅×チャネル)を有する10個のフィルタは、(5×5×1 + 1)×10 = 110の訓練用パラメータを有する。 + 1はバイアス項のためのものであることに注意してください。

特にConvNetのアーキテクチャに関するセクションを読むことをお勧めします。畳み込み演算に http://cs231n.github.io/convolutional-networks/#architectures

私は機知に「深い学習のための畳み込み演算へのガイド」を見つけ:https://arxiv.org/abs/1603.07285

関連する問題