将张量流转换为keras Conv2D

时间:2017-09-18 17:15:21

标签: tensorflow keras

我正在尝试使用MNIST数据将简单的张量流网络转换为keras并获得可重现的结果。

只有一个Dense图层我可以这样做,但是当我添加一个Conv2D图层时,tensorflow和keras的结果是不同的,我无法弄清楚原因。

tensorflow实现(tensorflow MNIST教程的一部分)如下:

  with tf.name_scope('conv1'):
     W_conv1 = weight_variable([2, 2, 1, 32])
     b_conv1 = bias_variable([32])
     h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)

  def weight_variable(shape):
   """weight_variable generates a weight variable of a given shape."""
      initial = tf.truncated_normal(shape, stddev=0.1, seed=0)
      return tf.Variable(initial)

 def bias_variable(shape):
 """bias_variable generates a bias variable of a given shape."""
    initial = tf.constant(0.1, shape=shape)
    return tf.Variable(initial)

Keras的实施如下:

 ki = TruncatedNormal(mean=0.0, stddev=0.1, seed=0)
 bi = Constant(value=0.1)
 net = Conv2D(32, kernel_size=(2, 2), activation='relu', 
              kernel_initializer=ki, bias_initializer=bi)(input_image) 

问题仅在于此层,就像我删除它一样,网络性能在两种情况下都是相同的,每个纪元的纪元。

另外:如果我在两种情况下都将内核大小更改为(1,1),那么性能是相同的,仅适用于更大的大小。

是否有人知道keras实现中的不同之处,可能会导致这种情况。 (它在tensorflow之上运行,并且在每种情况下都在同一台机器上运行。)

谢谢。

0 个答案:

没有答案