使用此链接进行双线性插值 http://cv-tricks.com/image-segmentation/transpose-convolution-in-tensorflow/
我正在尝试使用虚拟矩阵(即在我的代码中命名为张量的 4 维 filter_shape)来获得一些结果。但这给了我一个错误。谁能帮我一个虚拟示例来运行这个双线性插值代码?
import tensorflow as tf
import numpy as np
#tensor=np.zeros((2,2,3,3))
tensor=np.random.random((2,2,3,3))
print(tensor)
def get_bilinear_filter(filter_shape, upscale_factor):
##filter_shape is [width, height, num_in_channels, num_out_channels]
kernel_size = filter_shape[1]
### Centre location of the filter for which value is calculated
if kernel_size % 2 == 1:
centre_location = upscale_factor - 1
else:
centre_location = upscale_factor - 0.5
bilinear = np.zeros([filter_shape[0], filter_shape[1]])
for x in range(filter_shape[0]):
for y in range(filter_shape[1]):
##Interpolation Calculation
value = (1 - abs((x - centre_location)/ upscale_factor)) * (1 - abs((y - centre_location)/ upscale_factor))
bilinear[x, y] = value
weights = np.zeros(filter_shape)
print(weights)
for i in range(filter_shape[2]):
weights[:, :, i, i] = bilinear
init = tf.constant_initializer(value=weights,
dtype=tf.float32)
bilinear_weights = tf.get_variable(name="decon_bilinear_filter", initializer=init,
shape=weights.shape)
print(bilinear_weights)
get_bilinear_filter(tensor,3)