Quand j'utilisetf.nn.conv2d ne fonctionne pas sur mon code. mais tf.layer.conv2d fait. voulez savoir la différence
def main_conv_nn(images, training):
# Convolution
convFilterShape = [3, 3, 1, 32]
convFilterWeights = tf.Variable(tf.truncated_normal(convFilterShape, stddev=0.1))
Layer1 = tf.nn.conv2d(images, convFilterWeights, strides= [1,1,1,1] , padding='SAME')
Sa performance est inférieure à 20% de précision pour le code lié MNIST. Sa performance est vraiment mauvaise.
mais quand je l'ai changé mon code comme celui-ci,
def main_conv_nn(images, training):
# Convolution
#convFilterShape = [3, 3, 1, 32]
#convFilterWeights = tf.Variable(tf.truncated_normal(convFilterShape, stddev=0.1))
#Layer1 = tf.nn.conv2d(images, convFilterWeights, strides= [1,1,1,1] , padding='SAME')
Layer1 = tf.layers.conv2d(images, 32, [5, 5], padding= 'same')
cela fonctionne parfaitement.
POURQUOI tf.nn.conv2d ne fonctionne pas? (il n'y a pas d'erreur mais fonctionne bizarre)
La différence est parce qu'ils utilisent des initialiseurs du noyau. La valeur par défaut pour 'layers.conv2d' est' variance_scaling_initializer'. –