2019年度計算機科学実験4
仕様
- Network の定義
- net = Sequential(Affine(784,100), Sigmoid(), ...)
- Optimizer の定義
- optimizer = SGD(net.getLayers(), lr=0.01)
- 学習方法
- forward: loss = net(X, target=Y) # X, Y はミニバッチ
- 勾配の計算: net.backprop(loss)
- パラメータ更新: optimizer.step()
- 推論
- net(X)
- モデルの保存
- net.saveParams("params")
- モデルの読み込み
- net.loadParams("params")
実験結果
-
MNIST
- (784,100)-sigmoid-(100,10)-softmax
- SGD:lr=0.01
- epochs=50
- accuracy=0.9236
- 学習済みパラメータ: 50.npy
- SGD:lr=0.01
- (784,100)-relu-(100,10)-softmax
- SGD:lr=0.01
- epochs=50
- accuracy=0.9595
- 学習済みパラメータ: relu_50.npy
- SGD:lr=0.01
- (784,100)-relu-dropout(0.5)-(100,10)-softmax
- SGD:lr=0.01
-epochs=50
- accuracy=0.9401
- 学習済みパラメータ: relu_do_50.npy
- SGD:lr=0.01
-epochs=50
- (784,100)-batchnorm-relu-(100,10)-softmax
- SGD:lr=0.01
- epochs=50
- accuracy=0.9697
- 学習済みパラメータ: relu_bn_50.npy
- MomentumSGD:lr=0.01, alpha=0.9
- epochs=50
- accuracy=0.9759
- 学習済みパラメータ: relu_bn_50_msgd.npy
- AdaGrad:lr=0.001, h0=1.0e-8
- epochs=50
- accuracy=0.9532
- 学習済みパラメータ: relu_bn_50_adagrad.npy
- RMSProp:lr=1.0e-3, rho=0.9, epsilon=1.0e-8
- epochs=50
- accuracy=0.9751
- 学習済みパラメータ: relu_bn_50_rmsprop.npy
- AdaDelta:rho=0.95, epsilon=1.0e-6
- epochs=50
- accuracy=0.9776
- 学習済みパラメータ: relu_bn_50_adadelta.npy
- Adam:lr=1.0e-3, beta1=0.9, beta2=0.999, epsilon=1.0e-8
- epochs=50
- accuracy=0.9734
- 学習済みパラメータ: relu_bn_50_adam.npy
- SGD:lr=0.01
- (784,100)-sigmoid-(100,10)-softmax
-
CIFAR10
- (3072,500)-batchnorm-relu-(500,10)-softmax
- SGD:lr=0.01
- epochs=50
- accuracy=0.4213
- 学習済みパラメータ: cifar10_50_sgd.npy
- SGD:lr=0.01
- epochs=100
- accuracy=0.3329
- 学習済みパラメータ: cifar10_100_sgd.npy
- SGD:lr=0.01
- (3072,1000)-batchnorm-relu-(1000,10)-softmax
- SGD:lr=0.01
- epochs=100
- accuracy=0.4987
- 学習済みパラメータ: cifar10_1000_100_sgd.npy
- SGD:lr=0.01
- (3072,500)-batchnorm-relu-(500,100)-batchnorm-relu-(100,10)-softmax
- SGD:lr=0.01
- epochs=100
- accuracy=0.4692
- 学習済みパラメータ: cifar10_500-100_100_sgd.npy
- AdaDelta:rho=0.95, epsilon=1.0e-6
- epochs=100
- accuracy=0.4262
- 学習済みパラメータ: cifar10_500-100_100_adadelta.npy
- SGD:lr=0.01
- (3072,500)-batchnorm-relu-(500,10)-softmax