CIFAR-10データセットはMNISTトレーニングよりずっと難しいです

1037 ワード

CIFAR-10データセットはMNISTトレーニングよりずっと難しいです


MNISTデータセットはほぼよく訓練されており、2層の全接続ネットワークを勝手に設計しても90%近くの試験精度に達することができ、ボリューム層を加えると>97%の精度に簡単に達することができるが、同じモデルはCIFAR-10を訓練するために使用され、同じepochを訓練した結果は10%にすぎず、数十個のepochを訓練した後に試験精度が80%に達することができ、その間の上昇速度はカタツムリのように遅い.
cifar 10データ画素値の取値範囲は[0255]であり、このときlearning_をとるrate=1 e−3であり、lossは比較的効果的に低下することができる(入力前にトレーニングセットの画像平均値を減算する).ただし、中心化された画像の画素値を[0,1]に圧縮する場合はlearning_rate=1 e-1でなければなりません.理由:最も簡単な単一全接続層を例にとると、y=Wx+b y=Wx+bであり、W,b W,bが最適パラメータに訓練されていると仮定し、xが伸縮した場合、対応するscaleパラメータがk kであると仮定すると、このときの最適モデルはky=W(kx)+kb y=W(kx)+kbであり、対応する最適パラメータはW、kb W、kb、すなわちWは変化しないが、bは対応するk倍伸縮する.元の導関数dydW=x,dydb=1 dydW=x,dydb=1.x xを伸縮するとdy¯dW=x¯=kx、dy¯db¯=1 dy¯=d W=x¯=kx、d y¯d b¯=1となり、このとき元のステップ長をとると、ΔW=kx Δ W=k xは,必然的にloss降下速度が従来と異なることをもたらす.なるほど!
tensorflowでは変数名を繰り返し使用できませんか?実験の結果
x = tf.placeholder(...)
x = tf.multiply(x,...)

y = ...(x)

および
x = tf.placeholder(...)
x1 = tf.multiply(x,...)

y = ...(x1)

の結果が違うようです