彻底解决Torch[mat1 dim 1 must match mat2 dim 0]

博客讨论了深度学习中卷积层后的操作,通常需要通过view函数将多维数据展平为一维,以便输入全连接层。全连接层要求输入是一维的,因为它们处理每个节点与所有其他节点之间的连接。文章举例说明了view函数的工作原理,并展示了如何在PyTorch中定义全连接层。重点在于理解卷积层与全连接层在神经网络架构中的交互作用。

如果是卷积之后的层

一定要先化为一个维度

exp:

x = x.view(x.size(),-1)

ps:

view函数的解释

把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。比如

a=torch.Tensor([[[1,2,3],[4,5,6]]])
b=torch.Tensor([1,2,3,4,5,6])

print(a.view(1,6))
print(b.view(1,6))

得到的结果都是tensor([[1., 2., 3., 4., 5., 6.]])

等于是将不同维度的数据化为一个维度,因为全连接层是只能接受一维度的数据的

由图可见全连接层必须是一维数据:

同时全连接下一层的输入必须上一层的输出

exp:

self.fc1 = nn.Linear(64*12*4, 256)
self.fc2 = nn.Linear(256, 128)
self.fc3 = nn.Linear(128, 64)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值