2017-05-22 17 views
1

私は、年齢分類のためのalexnetに基づくネットワークを持っています。 私は8つのクラスのためのネットワークを訓練するとき、それは完全にうまく動作しますが、60または100にクラスを増やすと、 "損失モデル= NaNで分岐する" 私はすでに学習率を0.00000001または0.0に減らし、 。しかし助けなかった。学習率が低いにもかかわらずクラス数が増えると、 '損失と発散するモデル= NaN'になります。 [tensorflow]

私の損失関数は次のとおりです。

def loss(logits, labels): 
    labels = tf.cast(labels, tf.int32) #trying to avoig log(0) 
    shape = [logits.get_shape()[0], 57] 
    epsilon = tf.constant(value=0.1, shape=shape) 
    logits = logits + epsilon  



    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(
     logits= logits,labels= labels, name='cross_entropy_per_example') 
    cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy',) 
    tf.add_to_collection('losses', cross_entropy_mean) 
    losses = tf.get_collection('losses') 
    regularization_losses = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES) 
    total_loss = cross_entropy_mean + LAMBDA * sum(regularization_losses) 
    tf.summary.scalar('tl (raw)', total_loss) 
    #total_loss = tf.add_n(losses + regularization_losses, name='total_loss') 
    loss_averages = tf.train.ExponentialMovingAverage(0.9, name='avg') 
    loss_averages_op = loss_averages.apply(losses + [total_loss]) 
    for l in losses + [total_loss]: 
     tf.summary.scalar(l.op.name + ' (raw)', l) 
     tf.summary.scalar(l.op.name, loss_averages.average(l)) 
    with tf.control_dependencies([loss_averages_op]): 
     total_loss = tf.identity(total_loss) 
    return total_loss 

問題を解決するためにどのように任意のアイデア?

答えて

1

もう1つの可能なことは、体重の初期化を変更することです。また、この例に示すようにNaNは、から来ている場所を正確にデバッグするadd_check_numeric_opsを使用して見ることができます: Debugging nans in the backward pass

+0

ザビエルは、私は初期化あなたはそれを変更する必要があると思いますがザビエル使用しています:また、あなたはちょうどこのような全体logitsテンソルに賢明な要素を追加された単一の定数を追加することができますか? – Sesoin

1

あなたが不均衡なデータセットを扱っている、あなたは何のクラスを持っていないときに小さな値を追加しているように見えますバッチで、右か? あなたが投稿したコードには重みはありません。私が知る限り、ロジットに小さな定数を加えることは、クラスの重みを使用して意味をなすでしょう。とにかく残りが正しいと仮定すると、おそらく0.1の値が比較的大きすぎて不安定になる可能性があります。 1e-8のように非常に小さいものを試してみてください。ピート・ウォーデン@

epsilon = tf.constant(1e-8) 
logits = logits + epsilon 
関連する問題