現在、機械学習について学んでいます。google AI blogにて、ノイズ(外れ値)が含まれている場合の対処法として損失関数にbi-tempered-lossを使用するというものがあったためどれほど精度が変わるのかを検証しようと思いました。
以下のリンクにコードがあったため使用しました。bi-tempered-loss
作成したモデルの定義等の部分は以下の通りです。
python
1kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=2020) 2param = 0 3for train, test in kfold.split(X, Y): 4 model = Sequential() 5 model.add(Conv2D(32, (3, 3), padding='same',input_shape=X[train].shape[1:])) 6 model.add(Conv2D(128, (3, 3), padding='same')) 7 model.add(Activation('relu')) 8 model.add(Conv2D(128, (3, 3))) 9 model.add(Activation('relu')) 10 model.add(MaxPooling2D(pool_size = (2, 2))) 11 model.add(Dropout(0.5)) 12 model.add(Flatten()) 13 model.add(Dense(5)) 14 model.add(Activation('softmax')) 15 16 sgd = optimizers.SGD(lr=0.009876, clipnorm=1.) 17 model.compile(loss=bi_tempered_logistic_loss, 18 optimizer= sgd, 19 metrics=['accuracy']) 20 model.fit(X[train], 21 np_utils.to_categorical(Y[train], 5), 22 batch_size=30, epochs=10, verbose=1) 23 model_name = "efficient_net_param" + str(param) + ".hdf5" 24 model.save_weights(model_name) 25 param += 1
loss=bi_tempered_logistic_loss に関しては上記リンクを参考にしました。
実行したところ、以下のようなエラーが出てしまいました。
ValueError: No gradients provided for any variable: ['dense_10/kernel:0', 'dense_10/bias:0'].
私なりに調べてみたのですが、まだ知識が浅いのもあり、解決できませんでした。
上記エラーの原因について教えていただけると助かります。
よろしくお願いします。
あなたの回答
tips
プレビュー