Python 如何为该生成器应用中值滤波器?
我想把这段代码的中值滤波器应用到发电机输出的去噪中。 我不知道我应该在哪里添加中值滤波器,在激活之后或之前,或者在另一个地方? 与以下代码匹配的合适中值滤波器代码是什么Python 如何为该生成器应用中值滤波器?,python,tensorflow,image-processing,generative-adversarial-network,Python,Tensorflow,Image Processing,Generative Adversarial Network,我想把这段代码的中值滤波器应用到发电机输出的去噪中。 我不知道我应该在哪里添加中值滤波器,在激活之后或之前,或者在另一个地方? 与以下代码匹配的合适中值滤波器代码是什么 def generator(n_samples, noise=None, use_bn=False, net_dim=64, output_dim=64,is_training=False, latent_dim=128, stats_iter=None): if noise is None:
def generator(n_samples, noise=None, use_bn=False, net_dim=64,
output_dim=64,is_training=False, latent_dim=128, stats_iter=None):
if noise is None:
noise = tf.random_normal([n_samples, latent_dim])
output = lib.ops.linear.Linear('Generator.Input', latent_dim,
4 * 4 * 4 * net_dim, noise)
output = tf.nn.relu(output)
output = tf.reshape(output, [-1, 4, 4, 4 * net_dim])
output = lib.ops.deconv2d.Deconv2D('Generator.2', 4 * net_dim, 2 * net_dim, 5, output)
output = tf.nn.relu(output)
output = lib.ops.deconv2d.Deconv2D('Generator.3', 2 * net_dim, net_dim, 5, output)
output = tf.nn.relu(output)
output = lib.ops.deconv2d.Deconv2D('Generator.5', net_dim, net_dim, 5, output)
output = lib.ops.deconv2d.Deconv2D('Generator.6', net_dim, 3, 5, output)
output = tf.tanh(output)
return output
class DefGAN(DefGANBase):
def _build_generator(self):
self.generator_fn = lambda z=None, is_training=self.is_training: \
generator(self.batch_size,
use_bn=self.use_bn,
net_dim=self.net_dim,
is_training=is_training,
latent_dim=self.latent_dim,
output_dim=self.image_dim,
noise=z,
stats_iter=self.global_step)
我应用了这个中值滤波器:
self.fixed_noise_samples = self.generator_fn(self.fixed_noise,
is_training=False)
filt_length=3
edges = filt_length// 2
# convert to 4D, where data is in 3rd dim (e.g. data[0,0,:,0]
exp_data = tf.expand_dims(tf.expand_dims(self.fixed_noise_samples, 0), -1)
# get rolling window
wins= tf.image.extract_patches(images=exp_data, sizes=[1, filt_length, 1, 1],
strides=[1, 1, 1, 1], rates=[1, 1, 1, 1], padding='VALID')
# get median of each window
wins = tf.math.top_k(wins, k=2)[0][0, :, :, edges]
# Concat edges
self.fixed_noise_samples=tf.concat((self.fixed_noise_samples[:edges, :],
wins, data[-edges:, :]), 0)
但我得到了这个错误:
ValueError: Shape must be rank 4 but is rank 6 for 'ExtractImagePatches' (op:
'ExtractImagePatches') with input shapes: [1,128,64,64,3,1].