【无标题】3DCNN在高光谱数据中的运算过程,以nn.Conv3D为例

3DCNN在高光谱数据中的运算过程,以nn.Conv3D为例

高光谱图像介绍

普通的图片是RGB3个维度,高光谱图像就是比普通图像多几十个维度的图像而已。看别人用3dcnn处理高光谱图像没看懂,所以自己总结一下。

直接上代码

// 
m = nn.Conv3d(3, 4, (2, 7, 7), stride=1)
input = autograd.Variable(torch.randn(1, 3, 7, 60, 40))
output = m(input)
print(output.size())
# 输出是 torch.Size([1, 4, 6, 54, 34])

input = 长 宽 深度=60 40 7的立方体,一共3个这样立方体

nn.Conv3d(3, 4, (2, 7, 7), stride=1)
1.里面的第一个3是输入通道数 这里要和下面的3个立方体相等(3应该是通道数,因为在3D里面通道是立方体,在2D里通道是个平面)
2.这里的4是输出的立方体的个数(通道数),这个4可以随意更改,你改为5代表要用5个滤波器生成5个立方体
3.这里的(2,7,7)是卷积核大小,这里是长宽深度=772,stride=1代表(1,1,1)就是这个卷积核每次移动1,注意卷积核移动是在3个方向。

粘贴一下计算公式

在这里插入图片描述
再粘贴一下代码:
m = nn.Conv3d(3, 4, (2, 7, 7), stride=1)
input = autograd.Variable(torch.randn(1, 3, 7, 60, 40))

下面逐个介绍输出 torch.Size([1, 4, 6, 54, 34])的各个数字的由来:

1:batch大小
4:与nn.Conv3d(3, 4, (2, 7, 7), stride=1)中自定义的输出4相等 四个立方体
6:输入深度是7,卷积核深度是2,步长1,padding=0,则(7+20-2)/1+1=6
54:(60+2
0-7)/1+1=54
34:(40+2*0-7)/1+1=34

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值