深度学习中的卷积神经网络:原理、实现与优化
1. 规模定律
在深度学习领域,增加模型容量与模型性能之间存在直接的正相关关系。一些大型语言模型拥有数千亿个参数,但这并不意味着随意扩大任何模型都能提升性能,关键在于选择合适的模型进行扩展。
2. 卷积神经网络简介
多层感知器(MLP)虽然能处理多种问题,但在某些任务上并非最佳选择。例如,在猫狗图像识别任务中,基本的MLP表现不佳。而卷积神经网络(CNN)则能显著提升性能。
CNN用卷积操作取代了密集层中的传统矩阵乘法。对于二维输入(如无颜色深度的图像),可将其表示为网格,每个网格代表一个像素。同时,还有一个较小的二维核(kernel),通过在输入的有效窗口上“滑动”核,并使用加权求和操作将输入映射到特征图。
以下是一个使用Nx.conv实现基本边缘检测器的代码示例:
path = "train/dog.5.jpg"
img =
path
|> StbImage.read_file!()
|> StbImage.to_nx()
|> Nx.transpose(axes: [:channels, :height, :width])
|> Nx.new_axis(0)
kernel = Nx.tensor([
[-1, 0, 1],
[-1, 0, 1],
[-1, 0, 1]
])
kernel = kernel |> Nx.reshape({1, 1, 3, 3}) |> Nx.broadcast({3, 3, 3, 3})
img
|>
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



