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

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

ただいまの
回答率

87.37%

tensorflow実行時のエラー”creating @tf.function repeatedly in a loop”について

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 58

score 15

Pythonのkerasで機械学習を行っているのですが、グリッドサーチでパラメータを調整しているため、多重for文を構成してしまっております。なので、タイトルにもある警告文が発生してしまいます。調べたところ、for内で学習をさせてしまっていることで発生すると合ったのですが、自分がやりたいことの都合上、forループを削除できません。for文を介さずにパラメータサーチを行う方法があれば教えていただきたいです。

現状のソースの概要は以下の通りとなっております。

def NN(lr, epoch):
  #学習に使用するデータのループ
  for i in Sample:
    #以下学習モデルの構築及び学習・評価



if __name__ == "__main__":
#予め作成した学習率及びエポック数のリストから値を選択
  for lr in Param_lr:
    for epoch in Param_epoch:
        NN(lr, epoch)

  

上記のソースの通り、学習率及びエポック数に関してパラメータサーチを行い、更にNN()内で使用する学習データを決定するためのforループが存在します。パラメータサーチを行わない、Sampleのループを削除する以外での改善策を教えていただければ幸いです。

また、以下のコードで実行した際は警告文が出ませんでした。これは一体どうしてなのでしょうか?

import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense


x = np.linspace(-np.pi, np.pi).reshape(-1, 1)
t = np.sin(x)
def NN_test():
    for i in range(0, 5):
        # ニューラルネットワークの設定
        n_in = 1  # 入力層のニューロン数
        n_mid = 20  # 中間層のニューロン数
        n_out = 1  # 出力層のニューロン数

        batch_size = 8  # バッチサイズ

        # 入力層、中間層、出力層の3層のニューラルネットワークを構築
        model = Sequential()
        model.add(Dense(n_mid, input_shape=(n_in,), activation="sigmoid"))  # 活性化関数にシグモイド関数
        model.add(Dense(n_out, activation="linear"))  # 活性化関数に恒等関数
        model.compile(loss="mean_squared_error", optimizer="sgd")  # 損失関数に二乗誤差、最適化アルゴリズムにSGDを使用してコンパイル
        history = model.fit(x, t, batch_size=batch_size, epochs=10, validation_split=0.1)  # 10%のデータを検証用に使う

if __name__ == "__main__":
    NN_test()
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る