Chainerを使う時は目的変数は0から始める
いろいろやってみた感じ、sklearnでは目的変数は[-1,0,1]等でできるのだが、どうもChainerでは[0,1,2]のようにした方がいい。
たぶん、損失関数の計算でおかしなことが起きていると思われる。
predictの注意
以下のようにサンプル等では書かれることが多い。
class ChainerClassifier(BaseChainerEstimator, base.ClassifierMixin):
def predict(self, x_data):
return BaseChainerEstimator.predict(self, x_data).argmax(1) #argmaxは行列の行の中で最大になるインデックスを返す。つまりクラスは0から1,2としていかないといけない
コメントにも記載したようにargmax関数はインデックスを返すので、目的変数を-1から始めていたりするとおかしなことになるので注意。
max_pooling_2dとaverage_pooling_2dのpollingサイズ指定の違い
maxプーリングではpoolingははみ出してもいい。
つまり、奇数のカラム数もしくは行数に対して偶数のpoolingサイズでも問題無い。
逆も然り。
だが、averageプーリングでは厳密にカラム数と行数はpoolingサイズの倍数でないといけない。
たぶん、maxは少なくても計算できるが、平均は計算できないため。
なお、maxプーリングの方が速度が遅い。