关于tensor数据结构卷积试验

主要用于本人学习机器学习模型

学了很多神经网络模型,但是只知道大体框架,具体的实现细节在复制粘贴中也无法明晰

故以下试用tensor,并观察其内部在卷积时的变化

import torch
import numpy as np
import pandas as pd

b = np.array([[1,2,3],[4,5,6],[7,8,9]])
b_torch = torch.from_numpy(b)
print(b_torch)
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]], dtype=torch.int32)

然后为了试验卷积随机生成一个稍微大些的array转化为tensor

这里要注意c作为array的维数,否则在作卷积的时候会出现维数差异;并且为方便卷积,生成tensor时将其float()化

c = np.random.random_integers(1,20,size=(1,15,15))
c_torch = torch.from_numpy(c).float()
print(c_torch)
tensor([[[18., 14.,  8.,  5., 13., 16.,  3., 13.,  5., 10.,  1.,  4., 19., 13.,
          18.],
         [11., 18.,  4., 13.,  4., 20.,  6., 11.,  5., 12., 15.,  7.,  1., 19.,
           3.],
         [14.,  8., 18., 14., 15., 13., 16.,  1., 20., 16., 16., 19.,  2.,  8.,
          17.],
         [19.,  1., 20., 12.,  2.,  8., 16.,  4., 15., 20.,  9.,  5., 11.,  6.,
           5.],
         [18.,  3., 13., 15.,  2., 20., 12.,  1.,  2., 13., 11., 14., 11., 11.,
           5.],
         [13.,  9.,  1., 13., 14., 19., 10., 16., 10., 18., 14., 17., 18., 15.,
          19.],
         [16., 10.,  1.,  7.,  7.,  6.,  5., 10.,  5., 17., 11.,  3.,  7., 14.,
           5.],
         [ 4., 11., 17., 19.,  1., 12.,  9.,  5., 10.,  2.,  9., 13., 17., 12.,
           1.],
         [13.,  5., 20., 13., 17.,  9., 16.,  4., 16., 14.,  4., 16., 18., 10.,
          14.],
         [19., 11., 15., 12., 11.,  3.,  7., 18., 10.,  5.,  9., 20., 10., 20.,
          18.],
         [ 9., 15., 17., 16., 19., 20., 20.,  7.,  8., 15., 14., 15., 17.,  2.,
          18.],
         [ 2.,  1., 16., 14.,  6., 17., 18., 15., 13., 11., 13.,  3., 10.,  2.,
           1.],
         [19.,  4., 16., 17.,  1., 18., 20.,  4., 15.,  1.,  8., 13., 16.,  3.,
          15.],
         [13., 14., 12., 10., 13., 15.,  5., 12.,  3.,  5., 16.,  3., 20., 12.,
          10.],
         [13.,  5.,  4.,  2.,  4.,  8., 11.,  6., 10.,  5., 16., 10., 12.,  3.,
           2.]]])

因为随机生成的是一个二维的tensor,所以使用Conv2d来进行卷积处理

以下自定义一个内核用于计算网络输入的通道数为1,输出通道数也为1的内核

m = torch.nn.Conv2d(1,1,4,stride=1,bias=False)
m.weight.data = torch.Tensor([[[[1,2,3,4],
                              [2,3,4,1],
                              [3,4,1,2],
                              [4,1,2,3]]]])
print(m(c_torch))
tensor([[[468., 395., 475., 476., 384., 433., 423., 386., 448., 465., 415.,
          414.],
         [500., 382., 530., 468., 357., 405., 433., 434., 502., 472., 396.,
          350.],
         [484., 443., 478., 456., 432., 484., 464., 493., 541., 504., 451.,
          467.],
         [440., 340., 331., 428., 429., 391., 428., 447., 421., 492., 456.,
          413.],
         [414., 326., 420., 474., 342., 352., 359., 386., 463., 491., 481.,
          413.],
         [406., 403., 508., 428., 399., 404., 424., 407., 471., 490., 453.,
          527.],
         [453., 469., 417., 391., 379., 359., 372., 389., 422., 385., 481.,
          547.],
         [560., 538., 554., 502., 446., 396., 440., 408., 418., 495., 540.,
          518.],
         [497., 511., 561., 548., 469., 544., 513., 419., 437., 512., 472.,
          486.],
         [498., 447., 543., 544., 503., 556., 467., 392., 477., 466., 453.,
          451.],
         [482., 507., 583., 537., 513., 540., 408., 448., 395., 421., 421.,
          394.],
         [437., 390., 404., 446., 486., 445., 405., 368., 322., 394., 390.,
          319.]]], grad_fn=<SqueezeBackward1>)

收获:通过试验卷积具体数值对卷积更熟悉了,以后看神经网络的代码会有帮助 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值