0

モデルを正常にトレーニングし、freeze_graph.py でグラフをエクスポートし、bazel を使用してカスタマイズされた /tensorflow/examples/label_image/main.cc でビルドした後、次のランタイム エラーが発生します。

Running model failed: Invalid argument: Matrix size-compatible: In[0]: [150,4],
In[1]: [600,36][[Node: local3/MatMul = MatMul[T=DT_FLOAT, transpose_a=false,
transpose_b=false, _device="/job:localhost/replica:0/task:0/cpu:0"(local3/Reshape,
local3/weights/read)]]

前のステップはすべて成功しており、[150, 4] について疑問に思っているため、かなり混乱しています。私の batch_size は 150 で、4 はクラスの数ですが、なぜこのテンソルがローカル レイヤーの matmul 操作の入力なのですか? このコードは local3 レイヤーを示しています。pool4 レイヤーは次のようになります [150x10x10x6]

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

モデルについては、tensorflow の cifar10-tutorial を出発点として使用しました。私の local3 レイヤーは、チュートリアルのレイヤーにかなり依存しています。

4

1 に答える 1

0

OK、エラーを理解できませんでしたが、local3-Layer を変更して解決しました

# local3
with tf.variable_scope('local3') as scope:
    # Move everything into depth so we can perform a single matrix multiply.
    weights = _variable_with_weight_decay('weights', shape=[600, 36],
                                          stddev=0.04, wd=0.0004)
    biases = _variable_on_cpu('biases', [36], tf.constant_initializer(0.1))

    dense1 = tf.reshape(pool4, [-1, weights.get_shape().as_list()[0]])
    local3 = tf.nn.relu_layer(dense1, weights, biases)   # Relu activation
    _activation_summary(local3)

このレポhttps://github.com/HamedMP/tensorflow_export_cpp_exampleで local-layer 定義を見てきました

tf.nn.relu_layer() メソッドについて疑問に思っているのは、API リファレンスに記載されていないようだからです。

于 2016-12-02T09:20:23.647 に答える