2017-11-17 9 views
0

私はテンソルフローニュービーです。私はvgg-16ネットワークを構築し、それを使ってネットワークを変更したいと考えています。テンソルフローセットウェイトは次元誤差を与えます

これまでのところ、私はここにレイヤ1でstuckedだが、私が持っているものです。

def conv_layer(bottom, name, kernel): 
    with tf.variable_scope(name): 

     #net weight dictionary from caffe's version of caffe 
     conv = tf.nn.conv2d(net.weights[name+'/w'], kernel, [1, 1, 1, 1], padding='SAME') 

     conv_biases = tf.constant(net.weights[name+'/b'], name="biases") 
     bias = tf.nn.bias_add(conv, conv_biases) 

     relu = tf.nn.relu(bias) 
     return relu 

kernel1_1= tf.Variable(tf.truncated_normal([3, 3, 3, 64], dtype=tf.float32, stddev=1e-1), name='weights') 
conv_layer(tf.cast(image_batch, tf.float32), "conv1_1", kernel1_1) 

私が手にエラーがある:

Dimensions must be equal, but are 64 and 3 for 'conv1_1_15/Conv2D' (op: 'Conv2D') with input shapes: [3,3,3,64], [3,3,3,64] 

これは私には意味がありません

答えて

0

I net.weightsには何が含まれているのか分かりませんが、カーネルの重みがあるとすれば、それらをカーネル変数に割り当てるべきです。

conv = tf.nn.conv2d(net.weights[name+'/w'], kernel, [1, 1, 1, 1], padding='SAME') 

conv = tf.nn.conv2d(bottom, kernel, [1, 1, 1, 1], padding='SAME') 

でなければなりませんし、ネットワークの定義が完了したら、カーネルと偏見に重みを割り当てます。

+0

はい、あなたは正しいです – user1871528

関連する問題