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 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())
Example #4
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()