畳み込みニューラルネットワークのconvolutionレイヤについての質問です。
機械学習は勉強し始めたばかりで、すでに完成しているニューラルネットワークのコードを使っているのですが、入力データにかけるフィルターの数は基本的に平方数か2の冪乗(16,32,64あたり)になってます。2の冪乗以外の数字でも一応学習はできたのですが、2の冪乗がデフォルトなのはなぜですか?
> 入力データにかけるフィルターの数は基本的に平方数になってます
コード例を教えていただけますか?
```
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
```
引用元はこちらです
https://www.tensorflow.org/tutorials/images/cnn?hl=ja
すみません訂正します。平方数ではなく、2の冪乗の数になってる理由を知りたいです。
> すみません訂正します。平方数ではなく、2の冪乗の数になってる理由を知りたいです。
質問は編集可能ですのでタイトル、質問文を修正しましょう。(この欄は目立ちません。)
(理由は不明ですが)16の倍数が使われることが多いようですね。
Kerasのドキュメントには整数以外の記述はないので決まりはないようです。
画像認識用のコードだから2の冪乗になってるんですかね、それとも他になにか理由があるのですかね
シーケンシャルデータでもサンプルコードでは16の倍数が使われることが多いですね。
実際に色々変えてみて計算時間が変わるか調べてみるのも良いかもしれませんね。
ただ一番重要なのは精度(汎化性能)なので大幅に計算時間が変わるのでなければ特に気にしなくても良いかとは思います。
回答1件
あなたの回答
tips
プレビュー