質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

2458閲覧

Kerasのmodel.fitにvalidation_dataを入れると学習が異常に遅くなる

hoto

総合スコア23

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2022/06/17 00:18

編集2022/06/17 02:12

Kerasのmodel.fitにvalidation_dataを入れると学習が異常に遅くなります.

model=Sequential()
model.add(Dense(14, activation="tanh", input_dim=6, kernel_regularizer = regularizers.l2(0.03)))
model.add(Dense(1, activation="linear", input_dim=14))
model.compile(loss="mean_squared_error", optimizer=tf.optimizers.Adam(learning_rate=0.02), metrics=[tf.keras.metrics.RootMeanSquaredError()])
num_epoch=300

batch_size=8
history = model.fit(X_train_std, Y_train_std, epochs=num_epoch, batch_size=batch_size, validation_data=(X_val_std, Y_val_std))
これで実行すると約2分ほど学習に時間がかかります.(X_train_stdは(24,6)で,X_val_stdは(5,6)の配列です)

model.fitの部分でvalidation_data=(X_val_std, Y_val_std)を除いた
history = model.fit(X_train_std, Y_train_std, epochs=num_epoch, batch_size=batch_size)
で実行すると学習は6秒程度で終わります.

なぜvalidation_dataを入れるとこんなに時間がかかるのでしょうか.何か対処法はありますでしょうか.

python=3.8
tensorflow-cpu=2.9.1
keras=2.9.0

tensorflowとkerasはバージョンを変えても同じ現象が起こりました.gpuを使用しても同様でした.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2022/06/17 02:06

> X_train_stdは(5,6)の配列 X_train_std ↓ X_val_std でしょうか?
hoto

2022/06/17 02:10

そうです。 すみません。
guest

回答1

0

ベストアンサー

google colabで下記コードを実行して、実行時間を測りました
ハードウェアアクセラレータはNone(CPU)です
実行は一回だけで、複数回測って平均はしてません

python

1import tensorflow as tf 2from tensorflow.keras.models import Sequential 3from tensorflow.keras.layers import Dense 4from tensorflow.keras import regularizers 5import numpy as np 6import time 7 8 9X_train_std = np.random.rand(24,6) 10Y_train_std = np.random.rand(24,1) 11 12X_val_std = np.random.rand(5,6) 13Y_val_std = np.random.rand(5,1) 14 15 16model=Sequential() 17model.add(Dense(14, activation="tanh", input_dim=6, kernel_regularizer = regularizers.l2(0.03))) 18model.add(Dense(1, activation="linear", input_dim=14)) 19 20model.compile(loss="mean_squared_error", optimizer=tf.optimizers.Adam(learning_rate=0.02), metrics=[tf.keras.metrics.RootMeanSquaredError()]) 21 22 23num_epoch=300 24batch_size=8 25 26history = model.fit(X_train_std, Y_train_std, epochs=num_epoch, batch_size=batch_size, verbose=0, validation_data=(X_val_std, Y_val_std)) 27start = time.time() 28history = model.fit(X_train_std, Y_train_std, epochs=num_epoch, batch_size=batch_size, verbose=0, validation_data=(X_val_std, Y_val_std)) 29elapsed_time = time.time() - start 30 31start = time.time() 32history = model.fit(X_train_std, Y_train_std, epochs=num_epoch, batch_size=batch_size, verbose=0) 33elapsed_time2 = time.time() - start 34 35print ("elapsed_time:{0}".format(elapsed_time) + "[sec]") 36print ("elapsed_time2:{0}".format(elapsed_time2) + "[sec]")

elapsed_time:5.76010537147522[sec]
elapsed_time2:1.265974521636963[sec]

「validation_data」有りだと遅くはなりますが、2分もかかりませんでした

投稿2022/06/17 05:06

jbpb0

総合スコア7651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoto

2022/06/17 05:16

私のPCがおかしいんですかね。 少し前まではjbpb0さんと同様に、2分もかかることなく計算出来ていたんですけど。
hoto

2022/06/17 05:42

何か試した方が良いことや確認した方があれば、教えて頂きたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問