/le4dip2019

2019年度計算機科学実験4

Primary LanguagePython

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
    • (784,100)-relu-(100,10)-softmax
      • SGD:lr=0.01
        • epochs=50
        • accuracy=0.9595
        • 学習済みパラメータ: relu_50.npy
    • (784,100)-relu-dropout(0.5)-(100,10)-softmax
      • SGD:lr=0.01 -epochs=50
        • accuracy=0.9401
        • 学習済みパラメータ: relu_do_50.npy
    • (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
  • 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
    • (3072,1000)-batchnorm-relu-(1000,10)-softmax
      • SGD:lr=0.01
        • epochs=100
        • accuracy=0.4987
        • 学習済みパラメータ: cifar10_1000_100_sgd.npy
    • (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