使用numpy从头开始构建cnn
numpycnn的Python项目详细描述
卷积神经网络的numpy实现。 只创建了三个层,即卷积(conv)、relu和max池。 主要步骤如下:
读取输入图像。
准备过滤器。
conv层:将每个过滤器与输入图像卷积。
relu层:在特征映射(conv层的输出)上应用relu激活函数。
最大池层:对relu层的输出应用池操作。
堆叠conv、relu和max池层
该项目使用安装在Anaconda4.2.0(64位)内部的Python3.5.2进行测试。 使用的numpy版本是1.14.0
名为example.py的文件是使用项目的一个示例。
代码从读取输入图像开始。图像可以是单维图像,也可以是多维图像。 在本例中,使用输入灰度,这就是为什么需要确保图像已经是灰度的原因。
根据输入图像的尺寸,制备第一conv层的滤波器。通过指定以下内容创建筛选器:
过滤器数量。
第一维度的大小。
第二维度的大小。
三维尺寸等。
因为之前的图像是灰色的,所以过滤器只有宽度和高度,没有深度。这就是为什么只需要指定三个数字(过滤器数量、宽度和高度)就可以创建它。
代码仍然可以处理rgb图像。唯一的区别是使用与图像形状相似的过滤器。如果图像是rgb且未转换为灰色,则将通过指定4个数字(过滤器数量、宽度、高度和通道数量)来创建过滤器。
有关更多详细信息,请参阅描述该项目的文章,题为“从头开始使用numpy构建卷积神经网络”。可在以下链接中找到:
LinkedIn:https://www.linkedin.com/pulse/building-convolutional-neural-network-using-numpy-from-ahmed-gad/
Kd块:https://www.kdnuggets.com/2018/04/building-convolutional-neural-network-numpy-scratch.html 它也被翻译成中文:http://m.aliyun.com/yunqi/articles/585741
联系作者:
金块:https://www.kdnuggets.com/author/ahmed-gad LinkedIn:https://www.linkedin.com/in/ahmedfgad
脸谱网:https://www.facebook.com/ahmed.f.gadd
ahmed.f.gad@gmail.comahmed.fawzy@ci.menofia.edu.eg