2017-08-25 50 views
-1

私は深いニューラルネットワーク構築にtflearn.DNNを使用します。減少総損失

# Build neural network 
net = tflearn.input_data(shape=[None, 5], name='input') 
net = tflearn.fully_connected(net, 64, activation='sigmoid') 
tflearn.batch_normalization(net) 
net = tflearn.fully_connected(net, 32, activation='sigmoid') 
tflearn.batch_normalization(net) 
net = tflearn.fully_connected(net, 16, activation='sigmoid') 
tflearn.batch_normalization(net) 
net = tflearn.fully_connected(net, 8, activation='sigmoid') 
tflearn.batch_normalization(net) 
# activation needs to be softmax for classification. 
# default loss is cross-entropy and the default metric is accuracy 
# cross-entropy + accuracy = categorical network 
net = tflearn.fully_connected(net, 2, activation='softmax') 
sgd = tflearn.optimizers.SGD(learning_rate=0.01, lr_decay=0.96, decay_step=100) 
net = tflearn.regression(net, optimizer=sgd, loss='categorical_crossentropy') 

model = tflearn.DNN(net, tensorboard_verbose=0) 

を私は多くのことをしようとしたが、すべての時間は、全損失は、この値の周りにある:

Training Step: 95 | total loss: 0.68445 | time: 1.436s 
| SGD | epoch: 001 | loss: 0.68445 - acc: 0.5670 | val_loss: 0.68363 - val_acc: 0.5714 -- iter: 9415/9415 

合計損失を減らして精度を上げるにはどうすればよいですか?

+0

あなたは試してみましたでしょうか? –

答えて

0

多くの側面は、データセットとネットワークを含むネットワークパフォーマンスを向上させると考えられます。 貼り付けたネットワーク構造だけでは、取得したいデータセットやターゲットに関する詳細情報がなくても、正確さを高める明確な方法を与えるのは難しいです。しかし、以下では、いくつかの有用な慣行がネットワークを改善/デバッグにあなたを助けることがあります:データセットについて

1.

  • は歪みとバランスのデータセットですか?
  • さらにトレーニングデータを入手してください。
  • 可能であれば、データ拡大を追加してください。
  • データを正規化します。
  • フィーチャエンジニアリング。ネットワーク

    • について

    2.ネットワークのサイズが大きく/小さすぎますか?

  • 電車の履歴で釣り合っているか不足しているかを確認してから、最高のエポックサイズを選択してください。
  • 異なる初期化スキームで初期化ウェイトを試してください。
  • 異なる有効化機能、損失関数、最適化を試してください。
  • レイヤ番号とユニット番号を変更します。
  • バッチサイズを変更してください。
  • ドロップアウトレイヤーを追加します。

そして、もっと深く分析するために、以下の記事は、あなたに役立つかもしれない:

+0

ありがとうございました。私はここからいくつかのことを試みます –

関連する問題