connectionと呼びます。blockを複数積み上げて構成していきます。learningが深いDNNの学習を可能にすると著者が考えた理屈は以下の通りです。出力するように学習すればいいだけです。複雑に非線形関数を重ねているDNNで一から恒等写像を学習することに比べるとそれよりは簡単に恒等写像が学習できそうです。畳み込み層の出力を見てみると通常のCNNと比べて小さい値を取ることがわかっています。learningを導入することにより劣化問題を回避し、以前より多くのレイヤーを持つモデルを学習できるようになりました。レイヤー3層で構成することで更にレイヤーの数を増やしました。architectureと名付けました。conv.でchannel方向の次元を削減してから畳み込みを行って、再度1x1で今度は次元を復元することで計算量を抑えつつレイヤー数を増やすことです。blockあたり1レイヤー数を1枚増やすことに成功しています。bootleneckという名前は、いったんchannel次元を削減してから復元していることに由来しています。逆に言えば計算リソースが確保出来るのであればbottleneck構造を使う必要はないと思われます。blockに挟むレイヤー数は論文では3枚になっていますが、この数字自体には特に理由は無いようです。learningの恩恵を受けられないでしょう。いう操作が行なえません。shortcutで、実装上は1x1のconv.で行っています。blockでのみ採用されています。スポンサーリンク実装と評価ResNetの論文について概観したので実装と評価をしてみましょう。基本的には原論文のImageNetを使った実験を踏襲していますが、以下の様な差異があります。epoch程学習させている)。今回は比較的パラメータの少ないResNet50と呼ばれる、レイヤー数が50のResNetを実装しました。blockを構成するBottleneckクラスをResNet50クラスの中で積み上げる形で実装しています。keras公式の実装では畳み込み層にバイアス項がありますが、pytorch公式の実装にはバイアス項が無いという違いがあります。原論文の実装ではバイアス項があるのでpytorchの実装が何故そうなっているかは不明です。本実装ではバイアス項は入れてあります。Pythonとpytorchのバージョンは以下の通りです。実験ではImageNetの代わりにCIFAR10を使用しました。Notebooks/dataset/に展開しました。展開したらデータを読み込みましょう。num_workers=0)画像の確認データセットがきちんとロードできたかサンプル画像を出力してみます。))以上のコードを実行して次の様に画像が出力されれば大丈夫です。images学習それでは学習を走らせてみましょう。学習用のパラメータはepoch数を除いて論文の通りです。ReduceLROnPlateauのpatienceの様に論文に書かれていないパラメータは適当に決めています。Training')結果と考察Testセットに対する性能は以下の表のようにprecision、recall共に0.89となりました。epochの学習にかかった時間は7時間9分でした。rateとlossの推移は以下の通りです。rateLoss前回のVGGがBatchNormalizationを入れて74epoch回してようやく0.81だったことを考えると40epochでこの精度は圧倒的です。今回は計算時間の都合からepoch数を抑えましたが、epoch数を増やせばもっと精度は見込めると思われます。今回学習に7時間かかりましたが以前の調査通りであれば、kerasで同じ実験をしていればざっくり14時間は学習にかかっていたことになります。これだけ学習時間が変わると為るとやはり今後はpytorchによる実装の方がkerasのより良いのではないかと改めて思いました。923]])スポンサーリンクまとめ以上ResNetの論文についてまとめた上で、ResNet50をpytorchで実装しました。CIFAR10を用いた実験ではVGG16よりも少ないepoch数で高い精度を達成できることが確認できました。epochで7時間かかることが分かりました。以前の実験から、pytorchはkerasの2倍程度高速であると見積もるとRexNet50の学習はVGG16の14倍程度かかると言えそうです。tuningを行うのが良さそうです。subtractionを適用したり学習率を0.1にすると学習が上手くいかない現象も確認できました。rateの決め方についてもう少し調べられればと思います。subtractionを行うと学習が上手くいかない(lossがnanになったり、収束しなかったりする)かは調査したのですが分かりませんでした。*3:正確に言うと原論文著者のResNet50の実装にはバイアス項はあるが、ResNet101とResNet152はバイアス項があったり無かったりする。Storage上の音声ファイルをテキストに変換する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。