目录
1.问题介绍
2.代码实例
3.输出结果
4.安装流程
下面是使用Conv2D算子("2D"表明卷积核是二维的,多用于处理图像数据)完成一个图像边界检测的任务。图像左边为光亮部分,右边为黑暗部分,目的是检测出光亮与黑暗的分界处。
设置宽度方向的卷积核为[1,0,-1],此卷积核会将宽度方向间隔为1的两个像素点的数值相减。当卷积核在图片上滑动时,如果它所覆盖的像素点位于亮度相同的区域,则左右间隔为1的两个像素点数值的差为0。
只有当卷积核覆盖的像素点,有的处于光亮部分,有的处于黑暗部分。左右间隔为1的两个像素点数值的差不为0。将此卷积核作用到图片上,输出特征图片上只有对应光亮与黑暗分界线的地方像素值才不为0。
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可:
# Also add the following code,
# so that every time the environment (kernel) starts,
# just run the following code:
import sys
sys.path.append('/home/aistudio/external-libraries')
import matplotlib.pyplot as plt
import numpy as np
import paddle
from paddle.nn import Conv2D
from paddle.nn.initializer import Assign
w = np.array([1,0,-1], dtype='float32')
w = w.reshape([1,1,1,3])
conv = Conv2D(in_channels = 1, out_channels = 1, kernel_size=[1,3],
weight_attr = paddle.ParamAttr(
initializer = Assign(value=w)
))
img = np.ones([50,50], dtype='float32')
img[:,30:] = 0.
#将图片形状调整为[N,C,H,W]的形式
x = img.reshape([1,1,50,50])
#将numpy.ndarray转化成paddle中的tensor
x = paddle.to_tensor(x)
#使用卷积算子作用在输入图片上
y = conv(x)
#将输出tensor转化为numpy.ndarray
out = y.numpy()
f = plt.subplot(121)
f.set_title('input image', fontsize = 15)
plt.imshow(img, cmap='gray')
f = plt.subplot(122)
f.set_title('output featuremap', fontsize=15)
plt.imshow(out.squeeze(), cmap = 'gray')
plt.show()
print(conv.weight)
print(conv.bias)
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
【深度学习基础】Mac系统安装Anaconda_骆先生的老屁的博客-CSDN博客_mac安装conda
pip镜像源配置升级 + python3版本切换 + Tensorflow和paddlepaddle安装大全 (MAC OSX)_Th3mess的博客-CSDN博客