私はチュートリアルDeep MNIST for Expertsをただ1つのクラスを検出するように調整しようとしています。画像にキティが含まれているかどうかを検出するとします。テンソルフロー:1クラス分類
これは私のコードの予測一部です:
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y_conv), reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
sess.run(tf.initialize_all_variables())
for i in range(20000):
batch = mnist.train.next_batch(50)
if i%100 == 0:
train_accuracy = accuracy.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0})
print("step %d, training accuracy %g"%(i, train_accuracy))
train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
print("test accuracy %g"%accuracy.eval(feed_dict={
x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))
問題は、一つのクラスで、ソフトマックスはあっても、常にブランクのイメージのために、1の自信を持って、そのクラスを返すということです。 softmaxとクロスエントロピーを修正しようとしましたが、解決できませんでした。
この問題にどのようなアプローチが推奨されているかを知る必要があります。 私は予測が画像がキティである確率であることを望んでいます。
私はこれがランダムな画像で訓練された第2のラベルを使用して解決できることを知っていますが、より良い解決策があるかどうかを知る必要があります。
ありがとうございました。
コード全体を入力してください。また、1クラスあたりの電車とテスト画像の数はいくつですか? – rvinas
全体のコードはチュートリアルのものです。テスト用に5Kのトレーニング用に50Kの画像を使用しています。すべての画像は一意のクラスに属します。 – cropmad1548
あなたは2つのクラス、子猫ではなく子猫であるので、そのバイナリ分類です。 –