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()
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)
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()
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())