2017-06-20 4 views
1

Tensorflowを使用していくつかのオブジェクト表現を分類しようとしています。 num_classes2であり、ニューラルネットワークに供給された表現におけるチャネルの量が、私の場合ロジットから確率を得る - 同じサイズではないロジットとラベル

with tf.variable_scope('sigmoid_linear') as scope: 
    weights = _variable_with_weight_decay('weights', [192, num_classes], 
               stddev=1/192.0, wd=0.0) 
    biases = _variable_on_cpu('biases', [num_classes], 
            initializer) 
    sigmoid_linear = tf.add(tf.matmul(local4, weights), biases, name=scope.name) 
    _activation_summary(sigmoid_linear) 

return sigmoid_linear 

:私のように定義された最後の層と、Tensorflow Cifar-10の例と同じアーキテクチャを使用しましたさらに、私は現在5つの例しかデバッグしていません。最後の層の出力は、[40,2]の形状を有する。私は最初の次元が5 examples * 8 channelsに起因し、第2の次元がクラスの数に起因すると予想します。

ロジットとラベルを比較するには、たとえば次のようにします。 tensorflow.nn.SparseSoftmaxCrossEntropyWithLogits私はそれらに共通の形が必要です。現在の形状のログの現在の内容をどのように解釈できますか?ログの最初の次元をnum_classesと同じにするにはどうすればよいですか?

編集:推論関数への入力の形状は、[5,101,1008,8]の形をしています。推論関数は次のように定義されます。

def inference(representations): 
    """Build the model. 
    Args: 
    STFT spectra: spectra returned from distorted_inputs() or inputs(). 
    Returns: 
    Logits. 
    """  
    # conv1 
    with tf.variable_scope('conv1') as scope: 
     kernel = _variable_with_weight_decay('weights', 
                shape=[5, 5, nChannels, 64], 
                stddev=5e-2, 
                wd=0.0) 
     conv = tf.nn.conv2d(representations, kernel, [1, 1, 1, 1], padding='SAME') 
     biases = _variable_on_cpu('biases', [64], initializer, 
           ) 
     pre_activation = tf.nn.bias_add(conv, biases) 
     conv1 = tf.nn.relu(pre_activation, name=scope.name) 
     _activation_summary(conv1) 

    # pool1 
    pool1 = tf.nn.max_pool(conv1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], 
          padding='SAME', name='pool1') 
    # norm1 
    norm1 = tf.nn.lrn(pool1, 4, bias=1.0, alpha=0.001/9.0, beta=0.75, 
         name='norm1') 

    # conv2 
    with tf.variable_scope('conv2') as scope: 
     kernel = _variable_with_weight_decay('weights', 
                shape=[5, 5, 64, 64], 
                stddev=5e-2, 
                wd=0.0) 
     conv = tf.nn.conv2d(norm1, kernel, [1, 1, 1, 1], padding='SAME') 
     biases = _variable_on_cpu('biases', [64], initializer) 
     pre_activation = tf.nn.bias_add(conv, biases) 
     conv2 = tf.nn.relu(pre_activation, name=scope.name) 
     _activation_summary(conv2) 

    # norm2 
    norm2 = tf.nn.lrn(conv2, 4, bias=1.0, alpha=0.001/9.0, beta=0.75, 
         name='norm2') 
    # pool2 
    pool2 = tf.nn.max_pool(norm2, ksize=[1, 3, 3, 1], 
          strides=[1, 2, 2, 1], padding='SAME', name='pool2') 

    # local3 
    with tf.variable_scope('local3') as scope: 
     # Move everything into depth so we can perform a single matrix multiply. 
     reshape = tf.reshape(pool2, [batch_size, -1]) 
     dim = reshape.get_shape()[1].value 
     weights = _variable_with_weight_decay('weights', shape=[dim, 384], 
                stddev=0.04, wd=0.004) 
     biases = _variable_on_cpu('biases', [384], initializer) 
     local3 = tf.nn.relu(tf.matmul(reshape, weights) + biases, name=scope.name) 
     _activation_summary(local3) 

    # local4 
    with tf.variable_scope('local4') as scope: 
     weights = _variable_with_weight_decay('weights', shape=[384, 192], 
                stddev=0.04, wd=0.004) 
     biases = _variable_on_cpu('biases', [192], initializer) 
     local4 = tf.nn.relu(tf.matmul(local3, weights) + biases, name=scope.name) 
     _activation_summary(local4) 


    with tf.variable_scope('sigmoid_linear') as scope: 
     weights = _variable_with_weight_decay('weights', [192, num_classes], 
                stddev=1/192.0, wd=0.0) 
     biases = _variable_on_cpu('biases', [num_classes], 
             initializer) 
     sigmoid_linear = tf.add(tf.matmul(local4, weights), biases, name=scope.name) 
     _activation_summary(sigmoid_linear) 

    return sigmoid_linear 

答えて

0

さらにデバッグした後、問題が見つかりました。もともとTensorflowチュートリアルのレイヤーのポストコードはうまくいきます(もちろんそうです)。各レイヤーの後にすべての図形を印刷して、番号405 examples * 8 channelsではないことがわかりましたが、以前はbatch_size = 40と設定していました。不一致は、local layer 3の形を変えた後に始まりました。問題は今閉じられることができます。

関連する問題