2017-05-23 8 views
0

I die folgenden Zeilen in Syder (Anaconda) Typ:Eingabe für den Befehl tf.nn.conv2d

inlay=np.random.random(size=(1,10,10,3)).astype('float32') 
layer=tf.nn.conv2d(inlay,filter=np.array([1,1,3,1]).astype('float32'),strides=[1,1,1,1],padding='SAME') 

'inlay 'annehmen, der Eingang für tf.nn.conv2d sein. Allerdings habe ich den folgenden Valueerror:

"ValueError: Shape must be rank 4 but is rank 1 for 'Conv2D_21' (op: 'Conv2D') with input shapes: [1,10,10,3], [4]". 

Ich verstehe nicht. Der Eingang np.array, 'inlay', ist ein 4D Tesnor, also was ist das Problem?

Antwort

0

Ich denke, das Problem ist Ihr Filter, nicht Ihre Eingabe. Momentan ist es [1, 1, 3, 1], d. H. Es hat den Rang 1. Ich denke, du meinst einen Filter mit Kernel Breite 1, Höhe 1, Eingang Dim 3 und Ausgang Dim 1? Wenn ja, versuchen Sie so etwas wie:

with tf.variable_scope('conv'): 
    w = tf.get_variable(
     'weights', 
     shape=[1, 1, 3, 1], 
     initializer=tf.contrib.layers.xavier_initializer(), 
    ) 
    inlay = np.random.random(size=(1,10,10,3)).astype('float32') 
    layer = nn.conv2d(inlay, filter=w, strides=[1,1,1,1], padding='SAME')` 
+0

Ausgezeichnet. Du hattest Recht! Danke vielmals. –

Verwandte Themen