图像卷积

https://zh-v2.d2l.ai/chapter_convolutional-neural-networks/conv-layer.html

请问在6.2.4中,将bias设置为True,迭代卷积核时加上
conv2d.bias.data -= 0.03 * conv2d.bias.grad,结果无法正常收敛,是什么原因呢

应该是学习率太大的问题,把学习率调到0.003,同时增加迭代轮次好像就能收敛了。

@bereze 感谢回答,如果能配上实验结果的github证明收敛结果就更好了。

上面 corr2d的函数实现应该注明一下是在strid=1情况下得实现吧

练习二问的 Conv2D 自动求导时,有什么错误消息啊,请问有人发现吗

有人遇到这个错吗?

 34 from pandas._typing import FrameOrSeries, FrameOrSeriesUnion

—> 35 from pandas.util._decorators import Appender, Substitution, doc
36
37 from pandas.core.dtypes.cast import (

ImportError: cannot import name ‘doc’

好像没有错误消息~
但是只能计算2维张量

3,把输入和卷积展平,卷积核每滑动一个步幅取一个样本。
4.1.二阶导数卷积核就是拉普拉斯算子[[0,1,0],[1,-4,1],[0,1,0]]
4.2 d+1

X = torch.eye((8))
print(“⼀个6 × 8像素的单位矩阵图像 : \n”, X)
K = torch.tensor([[1.0, -1.0]])
Y = corr2d(X, K)
print(“互相关运算 : \n”, Y)
print(“corr2d(X.t(), K) : \n”, corr2d(X.t(), K))
print(“corr2d(X.t(), K) : \n”, corr2d(X.t(), K.t()))

结果就是:
tensor([[ 1., 0., 0., 0., 0., 0., 0.],
[-1., 1., 0., 0., 0., 0., 0.],
[ 0., -1., 1., 0., 0., 0., 0.],
[ 0., 0., -1., 1., 0., 0., 0.],
[ 0., 0., 0., -1., 1., 0., 0.],
[ 0., 0., 0., 0., -1., 1., 0.],
[ 0., 0., 0., 0., 0., -1., 1.],
[ 0., 0., 0., 0., 0., 0., -1.]])
如果转置X结果不变。
如果转置K结果也会转置。变成:
tensor([[ 1., -1., 0., 0., 0., 0., 0., 0.],
[ 0., 1., -1., 0., 0., 0., 0., 0.],
[ 0., 0., 1., -1., 0., 0., 0., 0.],
[ 0., 0., 0., 1., -1., 0., 0., 0.],
[ 0., 0., 0., 0., 1., -1., 0., 0.],
[ 0., 0., 0., 0., 0., 1., -1., 0.],
[ 0., 0., 0., 0., 0., 0., 1., -1.]])

1 Like

练习一:

Question1:
def diag(X):
for i in range(X.shape[0]):

for j in range(X.shape[1]):

if i == j:

  X[i,j] = 0

return X
把矩阵的对角线上元素只为零,然后kernel是1*2的,检测结果是对角线上面是-1下面是1,X转置后结果是一样的,K转置后就是把上面的结果转置。