O'REIKKY社のゼロから作るDeep Learningという本を参考にして、自分のデータに合わせたモデルを構築したいと考えているのですが、CNNを定義するサンプルコードの、filter_numとfilter_sizeという変数の意味がよくわかりません。
filter_num=30,filter_size=5というのは、5*5のフィルターを30個使うという意味でしょうか?
また、今回自分のモデルを作成するに当たって、フィルターのサイズが縦横同じではないものが必要なのですが、どのようにコードを改変すればよいのでしょうか?
実装したいフィルターのサイズは(2,200)です。
#サンプルコード
python
1# coding: utf-8 2import sys, os 3sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 4import pickle 5import numpy as np 6from collections import OrderedDict 7from common.layers import * 8from common.gradient import numerical_gradient 9 10 11class SimpleConvNet: 12 """単純なConvNet 13 14 conv - relu - pool - affine - relu - affine - softmax 15 16 Parameters 17 ---------- 18 input_size : 入力サイズ(MNISTの場合は784) 19 hidden_size_list : 隠れ層のニューロンの数のリスト(e.g. [100, 100, 100]) 20 output_size : 出力サイズ(MNISTの場合は10) 21 activation : 'relu' or 'sigmoid' 22 weight_init_std : 重みの標準偏差を指定(e.g. 0.01) 23 'relu'または'he'を指定した場合は「Heの初期値」を設定 24 'sigmoid'または'xavier'を指定した場合は「Xavierの初期値」を設定 25 """ 26 def __init__(self, input_dim=(1, 28, 28), 27 conv_param={'filter_num':30, 'filter_size':5, 'pad':0, 'stride':1}, 28 hidden_size=100, output_size=10, weight_init_std=0.01): 29 filter_num = conv_param['filter_num'] 30 filter_size = conv_param['filter_size'] 31 filter_pad = conv_param['pad'] 32 filter_stride = conv_param['stride'] 33 input_size = input_dim[1] 34 conv_output_size = (input_size - filter_size + 2*filter_pad) / filter_stride + 1 35 pool_output_size = int(filter_num * (conv_output_size/2) * (conv_output_size/2))
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。