5

私の入力は、記事のすべての単語の word2vector によって生成された 200 dims ベクトルです。私の出力は、記事の LDA 結果によって生成された 50 dims ベクトルです。mse を損失関数として使用したいです。 、しかし、次のように私のコードでは、損失の値は常に 0 です。

<pre>model = Sequential()
model.add(Dense(cols*footsize, 400,init = "glorot_uniform"))
# model.add(LeakyReLU(alpha = 0.3))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(400, 400,init = "glorot_uniform"))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(400, 50,init = "glorot_uniform"))
model.add(Activation('softmax'))
model.compile(loss='mse', optimizer='rmsprop')</pre>

画面出力は次のようになります。 ここに画像の説明を入力

誰が理由を教えてくれますか、ありがとう!

4

1 に答える 1

4

まず、出力は予測されたクラスのワンホット ベクトルですか? IE: クラス 1 は [1, 0, 0, ...] で、クラス 2 は [0, 1, 0, 0, ...] です。

その場合、出力層でのソフトマックス活性化の使用は許容され、分類問題を行っています。分類問題 (ワンホット出力) を行っている場合は、MSE を損失として使用できません。カテゴリカル クロス エントロピーを使用してください。

Softmax は、指定された数値が特定のクラスの予測確率になるように出力をスケーリングします。ウィキペディアはこちら: https://en.wikipedia.org/wiki/Softmax_function

出力ベクトルが実数であることを期待している場合は、出力ニューロンで線形活性化を使用する必要があります。

于 2015-08-28T13:21:38.377 に答える