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

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

ただいまの
回答率

87.96%

ディープラーニング にてグリッドサーチ

解決済

回答 1

投稿

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

score 21

ディープラーニング にて、グリッドサーチを使用したいのですが、
以下のコードの最後の行(grid_result = grid.fit(x_train, y_train))
にて、以下のようなエラーが発生します。

どこがおかしいかご教授いただければ嬉しいです。
何卒宜しくお願い致します。

エラー

ValueError: dense is not a legal parameter

コード

from keras.models import Model
from keras.applications.resnet50 import ResNet50
from keras.layers import Dense,Input,Flatten,Dropout,BatchNormalization

def create_normal_model():

  input_tensor = Input(shape=(IMAGE_SIZE, IMAGE_SIZE, 3))
  base_model = ResNet50(weights='imagenet', include_top=False,input_tensor=input_tensor)

  for layer in base_model.layers:
    layer.trainable=False#ResNetの重みは固定

  x = base_model.output
  x=Dropout(dropout)(x)
  x=Flatten()(x)
  x = Dense(dense, activation='relu')(x)
  x=BatchNormalization()(x)
  x=Dropout(dropout)(x)

  predictions = Dense(N_CATEGORIES, activation='softmax')(x)

  cn_model = Model(inputs=base_model.input, outputs=predictions)
  cn_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
  return cn_model

batch_size = [16, 32, 64]
epochs = [10, 25, 50]
dropout = [0.1, 0.3, 0.5]
dense = [256, 1024, 4092]
N_CATEGORIES  = 2
IMAGE_SIZE = 300

from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV

model_grid = KerasClassifier(build_fn=create_normal_model, verbose=0)

param_grid = dict(batch_size=batch_size, 
                  epochs=epochs,
                  dropout=dropout,
                  dense=dense)

grid = GridSearchCV(estimator=model_grid, param_grid=param_grid)

grid_result = grid.fit(x_train, y_train)
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

create_normal_model()の中で変数にしてて、サーチするために外から渡すものは全部、引数に書かないといけないのではないですかね
Keras with GridSearchCVでパラメータ最適化自動化
のiris_model()の定義みたいに

あと、N_CATEGORIESのようにサーチしないものは、create_normal_model()の定義よりも前に代入しておかないと、関数内で反映されないかも

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

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

関連した質問

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