Colaboratory 上で Tensorflow 2 を使い、自分の手書き数字のラベルを予測する。
最終的なノートブック
Colaboratory 上でノートブックを作る
Colaboratory 上で、
-
ファイル
>Python 3 の新しいノートブック
から新しいノートブックを作ります。
-
編集
>ノートブックの設定
を選択すると次のようなポップアップが表示されるので、ハードウェア アクセラレート
のドロップダウンメニューから GPU
を選びましょう。
手書き文字画像のラベルを予測するモデルを学習する
次のチュートリアルを実行していきます。
Tensorflow のバージョン設定
!pip list | grep tensorflow
上記を実行すると、バージョンが 1.15.0
であることがわかります。
!pip install -U tensorflow
上記を実行すると次のようなエラーが出ますが、今回の範囲内では問題ありませんでした。
もう一度 pip list
でバージョンを確認しておきましょう。
モデルを学習させる
ひたすら、チュートリアルのコードをコピペして、実行していきます。。。
5 epoch 回るのに、数分かかりましたが、問題なく終了しました。
MNIST データセットの入力がどんなものか表示してみる
ノートブック上で画像を表示する方法はいくつかありますが、今回は PIL
を使います。
from PIL import Image
img = Image.fromarray(x_test[0].reshape((28,28)) * 255).convert("RGB")
img
次のように画像が 7
の画像が表示されました。
自分の手書き数字の画像のラベル予測してみる
鉛筆だと線が細すぎてうまくいかなかったので、マジックペンで上書きした次のような画像を用意しました。
左のペインを開くと、 ファイル
というタブがあるので、選択すると今のワーキングディレクトリのファイルが表示されます。
アップロード
というボタンがあるので、そこから自分の手書き画像をアップロードします。
MNISTの入力との違いは、
- サイズが大きいこと
- 白黒画像じゃないこと
- 背景の方が明度が高いこと
なので、次のコードでMNISTの画像に合わせます。
from PIL import ImageOps
my_img = ImageOps.invert(Image.open("my_input.jpg").resize((28, 28)).convert("L"))
my_img
値を0~1に変換し、チャンネルの次元を加えて、先ほど学習したモデルに入力すると、
出力は次のようになりました。
import numpy as np
my_input = (np.array(my_img) / 255).reshape((28,28,1))
my_output = model([my_input]).numpy()[0]
my_output
次のコードで何番目のラベルの確率が一番高いか確認します。
my_output.argmax()
うまく予測できていることが確認できました。
Author And Source
この問題について(Colaboratory 上で Tensorflow 2 を使い、自分の手書き数字のラベルを予測する。), 我々は、より多くの情報をここで見つけました https://qiita.com/sosuke/items/b0407bd8baed09dad1de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .