Keras 3.0になってマルチバックエンド(TensorFlow,JAX, PyTorch)が使えるようになったので速度を比較してみる(3) MNIST(手書き数字認識)でPythonでRNN(再帰型ニューラルネットワーク)のBidirectional LSTMを試す。やっぱりTensorFlowが一番速く、JAX、PyTorchの順。
Kerasが3.0になってまた独立してマルチバックエンドTensorFlow, jax, PyTorch)が使えるようになっていたということで
前々回はDNN、前回はCNN(畳み込みニューラルネットワーク)をやってみた。
今回はRNN(再帰型ニューラルネットワーク)のうち、Bidirectional LSTMを試してみる。
準備はこのような感じで、
import os
# os.environ["KERAS_BACKEND"] = "tensorflow"
# os.environ["KERAS_BACKEND"] = "jax"
os.environ["KERAS_BACKEND"] = "torch"
import keras
# データはMNIST
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255
# Functional APIでDense層+ドロップアウト層を3層にしたDNNを設定
hidden_dim = 500
inputs = keras.Input(shape=(28, 28))
x = keras.layers.Bidirectional(keras.layers.LSTM(50, return_sequences=True))(inputs)
x = keras.layers.Bidirectional(keras.layers.LSTM(50))(x)
outputs = keras.layers.Dense(10, activation="softmax")(x)
# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=keras.optimizers.Adam(), loss=keras.losses.SparseCategoricalCrossentropy(),
metrics=[keras.metrics.SparseCategoricalAccuracy(name="acc"),])
|
時間を測る学習部分のコード
batch_size = 128
epochs = 10
keras.utils.set_random_seed(1)
model.fit(
x_train,
y_train,
batch_size=batch_size,
epochs=epochs,
validation_split=0.15,
)
score = model.evaluate(x_test, y_test, verbose=0)
print(score)
|
結果は
TensorFlow
JAX
PyTorch
やっぱりTensorFlowが一番速い。
ということでCPUのみ使う場合、Keras3.0のバックエンドはTensorFlowにすればよさそう。
GPU使う場合は別途試す。
« 高周波・RFニュース 2024年7月22日 Mini-Circuitsの36GHzまでのトリプラー、CMTのVNAでミキサ測定ホワイトペーパー、Intelのオリンピック用AtheleteGPT、Samsung Galaxy Watch 7分解(Exynos W1000)、I-PEXの細線同軸コネクタがカメラモジュールに採用、NVIDIAの学習コースなど | トップページ | 高周波・RFニュース 2024年7月23日 Samsung Galaxy Z Flip6分解ビデオでミリ波AiP確認、SEMCOの車載MLCC (1210 inch X7R 22㎌ 35V)、Nordic semiconductorがスマート農業のIoT4gに参加、マッキンゼーが6Gの収益化に疑問、OPアンプのモデリング、Apple R1チップ解説 »
「パソコン・インターネット」カテゴリの記事
- Google ColabのJulia言語でFPUT問題(Fermi–Pasta–Ulam–Tsingou、非線形結合した振動子が最初に与えたモードに戻る再帰現象)をDifferentialEquations.jlの2階の常微分方程式ソルバーDynamicalODEProblemでシンプレクティック8次のKahanLi8で計算、振動子の動きも動画にしてみる。(2025.05.22)
- PythonでFDTD法で電磁界シミュレーションできるopenEMSを使う(2)例題にあるマイクロストリップパッチアンテナ(MSA)を計算する。Sパラメータや入力インピーダンスだけでなく近傍界から遠方界の変換で指向性も計算できる。電流分布も動画で見る。給電はLumpedポートが使える。(2025.05.19)
- PythonでFDTD法で電磁界シミュレーションできるopenEMSを使う(1)例題にあるマイクロストリップラインのノッチフィルタ(スタブ)を動かして電磁界分布を動画で見てみる。CSXCADでモデルは確認できるし、ParaViewで電磁界分布が見られる。Sパラメータも計算できる。(2025.05.14)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年5月22日 三星電機(SEMCO)が165℃対応の車載インダクタ発表、KYOCERA AVXがリップル電流についての技術文書発行、QualcommとXiaomiの契約15年目、OmdiaがNokiaをPrivate 5Gの2025の王者と決定(2025.05.22)
- Google ColabのJulia言語でFPUT問題(Fermi–Pasta–Ulam–Tsingou、非線形結合した振動子が最初に与えたモードに戻る再帰現象)をDifferentialEquations.jlの2階の常微分方程式ソルバーDynamicalODEProblemでシンプレクティック8次のKahanLi8で計算、振動子の動きも動画にしてみる。(2025.05.22)
- 高周波・RFニュース 2025年5月21日 TDKが0201のRFインダクタ発表、InfineonがUWBのFiraコンソーシアムの理事会に、ubloxがロボット用GNSSモジュール発表、FibocomがMediaTekのT930を使った5Gモジュール発表、Motolora Edge 60 Pro分解動画(2025.05.21)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年5月22日 三星電機(SEMCO)が165℃対応の車載インダクタ発表、KYOCERA AVXがリップル電流についての技術文書発行、QualcommとXiaomiの契約15年目、OmdiaがNokiaをPrivate 5Gの2025の王者と決定(2025.05.22)
- Google ColabのJulia言語でFPUT問題(Fermi–Pasta–Ulam–Tsingou、非線形結合した振動子が最初に与えたモードに戻る再帰現象)をDifferentialEquations.jlの2階の常微分方程式ソルバーDynamicalODEProblemでシンプレクティック8次のKahanLi8で計算、振動子の動きも動画にしてみる。(2025.05.22)
- 高周波・RFニュース 2025年5月21日 TDKが0201のRFインダクタ発表、InfineonがUWBのFiraコンソーシアムの理事会に、ubloxがロボット用GNSSモジュール発表、FibocomがMediaTekのT930を使った5Gモジュール発表、Motolora Edge 60 Pro分解動画(2025.05.21)
« 高周波・RFニュース 2024年7月22日 Mini-Circuitsの36GHzまでのトリプラー、CMTのVNAでミキサ測定ホワイトペーパー、Intelのオリンピック用AtheleteGPT、Samsung Galaxy Watch 7分解(Exynos W1000)、I-PEXの細線同軸コネクタがカメラモジュールに採用、NVIDIAの学習コースなど | トップページ | 高周波・RFニュース 2024年7月23日 Samsung Galaxy Z Flip6分解ビデオでミリ波AiP確認、SEMCOの車載MLCC (1210 inch X7R 22㎌ 35V)、Nordic semiconductorがスマート農業のIoT4gに参加、マッキンゼーが6Gの収益化に疑問、OPアンプのモデリング、Apple R1チップ解説 »
コメント