2021年3月7日
完熟いちご。まだ食べていない。
今日は久しぶりに一日中仕事ではないプログラミングしたなぁ、という日だった。
機械学習学習日記 - 34日目
scikit-learnとTensorFlowによる実践機械学習の11章の演習課題をやっていなかったので、そこから。
課題をやり、keras の最低限の使い方が解ったので、なにかやってみようかなと、平仮名73文字の画像データセット約8万文字から、(ゐ|ゑ)を除いた平仮名を学習させる。まずは sklearn の RandomForestRegressor で GridSearchCV と cross_val_score で適当なパラメータを見繕ってスコアを出した所、0.84。続いて keras で NN を構築し、隠れ20層 x 100ニューロンと11章の各種パラメータをちょっと弄って学習させると、0.9849 で圧倒的。
間違い(softmaxの出力\n正解 - 間違った答え)を見るとこんな感じで、1に近く自信満々に間違っているのもあるけど、たいていそこまでは確率が高くない。濁点・半濁点のミスが多い。人間が見ればほぼ正しい平仮名と識別可能な間違いなので、0.9849とはいえまだまだ改善の余地はありそう。
最近NNを使うようになり、学習に時間がかかるようになったので新しいGPUが欲しくなる(今はGTX1080)。GPU周りを調べるとビットコインの値上がりによってマイニング需要が急激に増えてRTX3080周りは現在入手が適正価格ではほぼ無理なのね。また、DNNにはGPUメモリモリモリのほうが良い、という話を見て、そうするとRTX3090となり、なかなかのお値段になるのだよなぁ。
そして GPU の Load を見ると 20% ぐらいしか使われて無くて、今やってるぐらいの学習タスクだとGPUメモリ転送のオーバーヘッドのほうが大きく、むしろCPU(Ryzen 3900)を使ったほうがGPUより3倍速かったので、しばらくはCPUでやるかー。