图片-CNN澄清

时间:2019-09-10 02:33:41

标签: python tensorflow machine-learning keras neural-network

我想弄清楚在Convoulitional Neural Network中的几点,我正在使用Keras在CNN中实现图像识别。

1- 减小图像尺寸可以帮助模型更快地学习。我读了一些博客,其中它们将图像大小从(150,150)减小到(32,32)。

2- 增加编号层和节点的数量可以帮助提高准确性。我开始在一个CNN层上训练模型。但是精度低。然后,我再添加两个CNN层,它提供了大约74的高精度。此后,我又添加了一层,它在70s的相同范围内提供了精度。

3- 有没有一种方法可以使用keras在CNN中的每一层之后查看图像。 这将有助于研究CNN中的图像。

谢谢

2 个答案:

答案 0 :(得分:1)

以下是我对您的问题的投入:

1)在理想的世界中,您应该能够使用满足您需求的最大尺寸的相机拍摄任何东西的照片/视频。但是,此方法不切实际,尽管会导致相当好的性能。实际上,您提供的无噪声功能越多,您的神经网络就越准确。但是,您将在这样的网络上使用像这样的大型摄像机作为输入生成机?出于所有实际目的,请使用镜头尺寸不大于网球的相机。同时,训练尺寸大于64x64像素的图像非常昂贵。带有任何血统神经网络的单个GPU几乎无法提供2个批处理。同时,这将增加培训时间,您可能需要等待几天才能完成培训。

2)层数越多,效果越好,还有其他方法可以实现。这样做的一个问题是,您遇到的图层越多,您将面临爆炸或消失的梯度问题。另外,请确保您要规范化数据,提供足够的训练数据,并且其分布类似于有效/测试集的分布。因此,如您所见,神经网络的准确性有很多方面,而这些只是其中一些。

3)是的,您可以做到。可能需要花费一些时间来完整地编写它,因此我给您留下了一个中等的链接。它更详细,并具有您的需求:

https://towardsdatascience.com/visualizing-intermediate-activation-in-convolutional-neural-networks-with-keras-260b36d60d0

答案 1 :(得分:0)

让我尝试回答您的问题。

  1. 减小图像尺寸有助于模型学习更快,并减少了内存需求。 150 X 150像素在神经网络的单层中需要更多数量的节点,从而需要更多的内存。我不确定“挤压”与“中心裁剪”的准确性统计信息。

  2. 节点数量的增加可能与准确性的提高没有直接关系。在许多情况下,装袋和提升可以比增加层数更好地提高准确性。辍学是深度神经网络中的一个问题,但通过适当的数据规范化以及适当的激活功能和足够的训练数据,应该有助于提高多层的准确性。

  3. 简短的回答是。您可以通过在必须定义自己的神经网络的每一层末尾将特征向量重塑为原始图像形状来实现此目的。