あかすくぱるふぇ

同人サークル「あかすくぱるふぇ」のブログです。

・FC
入力層(784)、隠れ層(50)、出力層(10)の3層。
 隠れ層1000とかにすると精度向上。
損失関数は平均二乗誤差。
 変更したい場合は、tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=t, logits=y)
 yはsoftmaxしないで入力する。
 -tf.reduce_sum(t * tf.log(y))は、y=0のときにlog(y)がinfとなるので、微小量を足す必要がある。
学習アルゴリズムは再急降下法。
 変更したい場合は、tf.train.AdamOptimizer().minimize(loss)などとする。
 learning_rateはデフォルト引数が設定されてる場合もあるので要確認。

・CNN
ゼロから作るでは、[BN, C, H, W] * [FN, C, FH, FW] = [BN, FN, OH, OW]だが、
 tensorflowでは、[BN, H, W, C] * [FH, FW, C, FN] = [BN, OH, OW, FN]

・活性化関数
ステップ関数
シグモイド関数
ReLU関数

・出力層
分類問題ならソフトマックス関数

・ミニバッチ
縦にバッチを並べると結果も縦に並ぶ

・交差エントロピー誤差
正解ラベルkについて、ソフトマックス値ykのとき、誤差は-log(yk)
完璧に推定すると、yk=1なので誤差は0
そうでない場合は正の値となる
それを数式にするとΣ-tk・log(yk)

・数値微分による学習
numerical_gradient(f, x) = f(x+h) - f(x) / h
f : 損失関数, x : パラメータ
損失関数の勾配を算出することで、損失関数が小さくなる方向にパラメータxを変化させる

・誤差逆伝搬法
∂L/∂x = ∂L/∂z ・ ∂z/∂x
この「∂L/∂zが計算済」というのが逆伝搬するということ

・データの場所
Training/TestとImage/Labelの組み合わせで4ファイル

・Image
uint8型で784byteが60000個(Training)と10000個(Test)

・Label
uinit8型で1byteが60000個(Training)と10000個(Test)
onehotベクトル化すると10byte

↑このページのトップヘ