输入通道与过滤器的输入通道不匹配(Tensorflow)
input channels does not match filter's input channels (Tensorflow)
我想使用 tf.nn.conv2d_transpose
为 GAN 网络构建反卷积层。
我想创建一个函数 deconv_layer
。它生成一个新层,输出 filter_num
过滤器,其分辨率是输入分辨率的 expand_size
倍。
我的代码是:
def deconv_layer(x, filter_num, kernel_size=5, expand_size=2):
x_shape = x.get_shape().as_list()
with tf.name_scope('deconv_'+str(filter_num)):
size_in = x_shape[-1]
size_out = filter_num
w = tf.Variable(tf.random_normal([kernel_size, kernel_size, size_in, size_out], mean=0.0, stddev=0.125), name="W")
b = tf.Variable(tf.random_normal([size_out], mean=0.0, stddev=0.125), name="B")
conv = tf.nn.conv2d_transpose(x, w, output_shape=[-1, x_shape[-3]*expand_size, x_shape[-2]*expand_size, filter_num], strides=[1,expand_size,expand_size,1], padding="SAME")
act = tf.nn.relu(tf.nn.bias_add(conv, b))
tf.summary.histogram('weights', w)
tf.summary.histogram('biases', b)
tf.summary.histogram('activations', act)
return act
错误信息:
ValueError: input channels does not match filter's input channels
At conv = tf.nn.conv2d_transpose(...)
我不确定我是否正确使用了tf.nn.conv2d_transpose
。我尝试基于卷积层创建它。
过滤器尺寸错误。根据 docs:
filter: A 4-D Tensor with the same type as value and shape [height,
width, output_channels, in_channels]. filter's in_channels dimension
must match that of value (input).
您需要将 w
尺码更改为:
w = tf.Variable(tf.random_normal([kernel_size, kernel_size, size_out, size_in], mean=0.0, stddev=0.125), name="W")
我想使用 tf.nn.conv2d_transpose
为 GAN 网络构建反卷积层。
我想创建一个函数 deconv_layer
。它生成一个新层,输出 filter_num
过滤器,其分辨率是输入分辨率的 expand_size
倍。
我的代码是:
def deconv_layer(x, filter_num, kernel_size=5, expand_size=2):
x_shape = x.get_shape().as_list()
with tf.name_scope('deconv_'+str(filter_num)):
size_in = x_shape[-1]
size_out = filter_num
w = tf.Variable(tf.random_normal([kernel_size, kernel_size, size_in, size_out], mean=0.0, stddev=0.125), name="W")
b = tf.Variable(tf.random_normal([size_out], mean=0.0, stddev=0.125), name="B")
conv = tf.nn.conv2d_transpose(x, w, output_shape=[-1, x_shape[-3]*expand_size, x_shape[-2]*expand_size, filter_num], strides=[1,expand_size,expand_size,1], padding="SAME")
act = tf.nn.relu(tf.nn.bias_add(conv, b))
tf.summary.histogram('weights', w)
tf.summary.histogram('biases', b)
tf.summary.histogram('activations', act)
return act
错误信息:
ValueError: input channels does not match filter's input channels
At conv = tf.nn.conv2d_transpose(...)
我不确定我是否正确使用了tf.nn.conv2d_transpose
。我尝试基于卷积层创建它。
过滤器尺寸错误。根据 docs:
filter: A 4-D Tensor with the same type as value and shape [height, width, output_channels, in_channels]. filter's in_channels dimension must match that of value (input).
您需要将 w
尺码更改为:
w = tf.Variable(tf.random_normal([kernel_size, kernel_size, size_out, size_in], mean=0.0, stddev=0.125), name="W")