Example #1
0
    def __init__(self,
                 depth,
                 filter_size,
                 hidden_filter_size,
                 strides,
                 padding,
                 bias=LSTMBiasInit,
                 initializer=block_util.RsqrtInitializer(dims=(0, 1, 2)),
                 use_moving_average=False,
                 name=None):
        super(Conv2DLSTM, self).__init__([None, None, depth], name)
        self._iter = 0

        with self._BlockScope():
            self._input_conv = blocks_std.Conv2D(4 * depth,
                                                 filter_size,
                                                 strides,
                                                 padding,
                                                 bias=None,
                                                 act=None,
                                                 initializer=initializer,
                                                 name='input_conv2d')

            self._hidden_conv = blocks_std.Conv2D(4 * depth,
                                                  hidden_filter_size, [1, 1],
                                                  'SAME',
                                                  bias=None,
                                                  act=None,
                                                  initializer=initializer,
                                                  name='hidden_conv2d')

            if bias is not None:
                self._bias = blocks_std.BiasAdd(bias, name='biases')
            else:
                self._bias = blocks_std.PassThrough()
Example #2
0
  def testConv2DReflect(self):
    np.random.seed(768798)

    x_shape = [4, 10, 12, 6]
    f_shape = [3, 4, 6, 5]
    strides = [1, 2, 2, 1]
    padding = 'REFLECT'

    conv = blocks_std.Conv2D(depth=f_shape[-1],
                             filter_size=f_shape[0:2],
                             strides=strides[1:3],
                             padding=padding,
                             act=None,
                             bias=None)
    x_value = np.random.normal(size=x_shape)
    x = tf.convert_to_tensor(x_value, dtype=tf.float32)
    y = conv(x)

    with self.test_session():
      tf.global_variables_initializer().run()
      f_value = conv._kernel.eval()
      y_value = y.eval()

    y_expected = _NumpyConv2D(x_value, f_value,
                              strides=strides, padding=padding)
    self.assertAllClose(y_expected, y_value)
Example #3
0
    def __init__(self,
                 depth,
                 filter_size,
                 hidden_filter_size,
                 strides,
                 padding,
                 bias=blocks_lstm.LSTMBiasInit,
                 initializer=block_util.RsqrtInitializer(dims=(0, 1, 2)),
                 name=None):
        super(RasterScanConv2DLSTM, self).__init__([None, None, depth], name)

        with self._BlockScope():
            self._input_conv = blocks_masked_conv2d.RasterScanConv2D(
                4 * depth,
                filter_size,
                strides,
                padding,
                strict_order=False,
                bias=None,
                act=None,
                initializer=initializer,
                name='input_conv2d')

            self._hidden_conv = blocks_std.Conv2D(4 * depth,
                                                  hidden_filter_size, [1, 1],
                                                  'SAME',
                                                  bias=None,
                                                  act=None,
                                                  initializer=initializer,
                                                  name='hidden_conv2d')

            if bias is not None:
                self._bias = blocks_std.BiasAdd(bias, name='biases')
            else:
                self._bias = blocks_std.PassThrough()
Example #4
0
  def testConv2DBias(self):
    input_shape = [19, 14, 14, 64]
    filter_shape = [3, 7, 64, 128]
    strides = [1, 2, 2, 1]
    output_shape = [19, 6, 4, 128]

    conv = blocks_std.Conv2D(depth=filter_shape[-1],
                             filter_size=filter_shape[0:2],
                             strides=strides[1:3],
                             padding='VALID',
                             act=None,
                             bias=blocks_std.Bias(1))
    x = tf.placeholder(dtype=tf.float32, shape=input_shape)

    y = conv(x)
    self.CheckBiasAdd(y, conv._bias)
    self.assertEqual(output_shape, y.get_shape().as_list())