2016-09-07 3 views
5

Ich versuche, einen letzten arxiv work „Factorized CNNtf.nn.depthwise_conv2d ist zu langsam. Es ist normal?

, riefen die hauptsächlich die räumlich Faltung (depth weises Faltung) zusammen mit kanalweise linearem Vorsprung (1x1conv) getrennt argumentiert, kann die Faltungsoperation beschleunigen .

this is the figure for their conv layer architecture

Ich fand heraus, dass ich diese Architektur mit tf.nn.depthwise_conv2d und 1x1 Faltung implementieren kann, oder mit tf.nn.separable_conv2d.

unten ist meine Implementierung:

#conv filter for depthwise convolution 
 
depthwise_filter = tf.get_variable("depth_conv_w", [3,3,64,1], initializer=tf.random_normal_initializer(stddev=np.sqrt(2.0/9/32))) 
 
#conv filter for linear channel projection 
 
pointwise_filter = tf.get_variable("point_conv_w", [1,1,64,64], initializer=tf.random_normal_initializer(stddev=np.sqrt(2.0/1/64))) 
 
conv_b = tf.get_variable("conv_b", [64], initializer=tf.constant_initializer(0)) 
 
#depthwise convolution, with multiplier 1 
 
conv_tensor = tf.nn.relu(tf.nn.depthwise_conv2d(tensor, depthwise_filter, [1,1,1,1], padding='SAME')) 
 
#linear channel projection with 1x1 convolution 
 
conv_tensor = tf.nn.bias_add(tf.nn.conv2d(conv_tensor, pointwise_filter, [1,1,1,1], padding='VALID'), conv_b) 
 
#residual 
 
tensor = tf.add(tensor, conv_tensor)

Dies sollte etwa 9 mal schneller sein als die ursprüngliche 3x3x64 -> 64-Kanal-Faltung.

Allerdings kann ich keine Leistungsverbesserung erfahren.

Ich muss annehmen, dass ich das falsch mache, oder etwas stimmt nicht mit der Implementierung von Tensorflow.

Da es einige Beispiele gibt, die depthwise_conv2d verwenden, hinterlasse ich diese Frage hier.

Ist diese langsame Geschwindigkeit normal? oder gibt es einen Fehler?

Antwort

0

die aktuelle Implementierung von Tiefen conv2d nicht vollständig ist die parallele Leistung von GPU nutzen, können Sie für eine schnellere Umsetzung in der Zukunft warten müssen, beispielsweise in caffe gibt es schneller Dritt impl dieses Kernel https://github.com/yonghenglh6/DepthwiseConvolution

Verwandte Themen