動作確認と簡単なベンチマークテスト

tensorflow.orgのチュートリアルページを参考に,まずは実行できるかどうかのテスト.

ここではJupyter Notebook をダウンロードして実行する方法を実施.gitでもよい.
VSCodeを使用する場合は,Jupyter noebook 関連の Extension をインストールしておく.

Jupyter notebook(.ipynb) ファイルには,Pythonのソースコード+説明と,実行結果例が格納されており,VSCodeで開くことができる.
これが便利なのは,書かれているPythonコードがそのままマウスクリックで逐次実行または全体を順番に実行できることである.
さらに,各コード区間の実行時間と,その結果がソースの直後に一緒に表示される.

参考:Jupyter notebook のRun Allで,import tensorflow as tf の行でエラーが出る場合は,パスに追加してみると良い.

#pip show tensorflowで出てくるパスを追加
import sys
sys.path.append('/Users/tatsuya/venv/lib/python3.11/site-packages')

その1 SuperBeginner 編

Tensorflow MNISTデータセットを使った学習. 機械学習における HelloWorld 的サンプル.

Jupyter Notebook をダウンロードするのがおすすめ.
以下はソースコード部分のみを抜き取ったもの.

beginner.py(右クリックで名前を付けて保存)
import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

predictions = model(x_train[:1]).numpy()

tf.nn.softmax(predictions).numpy()

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss_fn(y_train[:1], predictions).numpy()

model.compile(optimizer='adam', loss=loss_fn, metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)

probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])
probability_model(x_test[:5])

Windows Native, CPU版,(Core i7-7820HQ 2.9GHz)

1epochあたり6sec程度.

Windows Native, GPU(GeForce GTX980)

1epochあたり8sec程度.

M1 Mac

beg_M1Mac_fit.png
1epochあたり,10sec程度.
beg_M1Mac_GPUperfm.png
GPU使用率は90%程度.

その2: Keras による Fasion MNIST 分類問題

同じくTensorflowの Kerasを用いた分類問題

靴や洋服などの画像の識別

Windows Native, Core i7-7820HQ

1 epoch あたり 6 sec程度.

Windows native, GeForce GTX980

1 epoch あたり 7 sec程度.

M1 Mac

classifi_MiMac_fit.png
1 epochあたり,8sec程度.
classifi_M1Mac_GPUperfm.png
GPU 使用率は 90% 程度.