0

일반 TensorFlow 예제부터 시작하겠습니다.TensorFlow에 여러 softmax 분류기 추가 예제

내 데이터를 분류하려면 내 데이터가 여러 개의 독립적 인 레이블 (확률의 합이 1이 아님)을 전달하기 때문에 여러 개의 레이블 (이상적으로는 복수 softmax 분류 자)을 사용해야합니다.

구체적으로 retrain.pyadd_final_training_ops() 이러한 라인은

final_tensor = tf.nn.softmax(logits, name=final_tensor_name) 

여기

cross_entropy = tf.nn.softmax_cross_entropy_with_logits(
     logits, ground_truth_input) 

이미 TensorFlow에서 일반 분류가 있습니까 최종 텐서 추가? 그렇지 않다면 다중 레벨 분류를 수행하는 방법은 무엇입니까? tensorflow/examples/image_retraining/retrain.py에서

add_final_training_ops()는 :

def add_final_training_ops(class_count, final_tensor_name, bottleneck_tensor): 

    with tf.name_scope('input'): 
    bottleneck_input = tf.placeholder_with_default(
     bottleneck_tensor, shape=[None, BOTTLENECK_TENSOR_SIZE], 
     name='BottleneckInputPlaceholder') 

    ground_truth_input = tf.placeholder(tf.float32, 
             [None, class_count], 
             name='GroundTruthInput') 

    layer_name = 'final_training_ops' 
    with tf.name_scope(layer_name): 
    with tf.name_scope('weights'): 
     layer_weights = tf.Variable(tf.truncated_normal([BOTTLENECK_TENSOR_SIZE, class_count], stddev=0.001), name='final_weights') 
     variable_summaries(layer_weights) 
    with tf.name_scope('biases'): 
     layer_biases = tf.Variable(tf.zeros([class_count]), name='final_biases') 
     variable_summaries(layer_biases) 
    with tf.name_scope('Wx_plus_b'): 
     logits = tf.matmul(bottleneck_input, layer_weights) + layer_biases 
     tf.summary.histogram('pre_activations', logits) 

    final_tensor = tf.nn.softmax(logits, name=final_tensor_name) 
    tf.summary.histogram('activations', final_tensor) 

    with tf.name_scope('cross_entropy'): 
    cross_entropy = tf.nn.softmax_cross_entropy_with_logits(
     logits, ground_truth_input) 
    with tf.name_scope('total'): 
     cross_entropy_mean = tf.reduce_mean(cross_entropy) 
    tf.summary.scalar('cross_entropy', cross_entropy_mean) 

    with tf.name_scope('train'): 
    train_step = tf.train.GradientDescentOptimizer(FLAGS.learning_rate).minimize(
     cross_entropy_mean) 

    return (train_step, cross_entropy_mean, bottleneck_input, ground_truth_input, 
      final_tensor) 

심지어 sigmoid 분류 및 재 훈련을 추가 한 후, Tensorboard 여전히 softmax 보여준다

Tensorboard with softmax

답변

0

TensorFlow 독립, 다중 레벨 분류 tf.nn.sigmoid_cross_entropy_with_logits있다.

+0

어떤 이유로 작동하지 않습니다. 나는 모델을 재 훈련하려고 노력했는데 그들은 여전히'softmax' 종류이다. Tensorboard는 그래프에서 'softmax'를 계속 표시합니다 (스크린 샷 참조). –