How to do atrous convolution with tf.nn.atrous_conv2d (python)

问题描述 投票:0回答:0

我正在尝试使用 tf.nn.atrous_conv2d 进行空洞卷积,输入是 6464 灰度图像填充到 6868,给定的 3*3 内核,扩张率为 2 [[-0.125,-0.25,-0.125], [-0.5,1,-0.5], [-0.125,-0.25,-0.125]]]

当我运行下面的代码时出现错误:

num_spatial_dims
must be 1, 2, or 3. Received: num_spatial_dims=0.

我不知道如何解决这个错误。我认为空间维度的数量是 2,因为我的输入数据是灰度图像。

代码如下:

from  matplotlib import pyplot as plt
import cv2
import csv
import numpy as np
import tensorflow as tf
from numpy import asarray

#read image
image = cv2.imread("image.png",0) 
image = cv2.resize(image, (64,64))

#padding
image_pad = cv2.copyMakeBorder(image, 2, 2, 2, 2, cv2.BORDER_REPLICATE)

#tensor
batch = 1 
height, width = image_pad.shape
out_channel = 1  
image_tensor = np.reshape(image_pad, (batch, height, width, out_channel))

#atrous convolution
filter = np.array([
    [-0.125,-0.25,-0.125],
    [-0.5,1,-0.5],
    [-0.125,-0.25,-0.125]]).astype(np.float32)
image_conv = tf.nn.atrous_conv2d(value = image_tensor, filters = filter, rate=2, padding= 'SAME')


谢谢你帮助像我这样的菜鸟。

或者我误解了空间维度数的含义

python tensorflow convolution
© www.soinside.com 2019 - 2024. All rights reserved.