java - 神经网络训练

标签 java neural-network image-recognition

我尝试识别每个数字的图片。我已经删除了数字以外的所有内容,因此除了数字在图片上的位置不同之外几乎没有噪音。我用的是Neuroph的图像识别gui,对训练有一些疑问。

似乎我对图片使用的分辨率越大,训练就越差。为什么是这样?我的训练集中有 100 张图片。每个数字 10 个。是不是太少了?为什么无论我做什么,每次训练都会收敛到某个数字,通常在总网络错误中介于 2-3 之间。

希望对你有所帮助。

编辑:

这是其中一个培训的照片 alt text

学的不多

最佳答案

信息呈指数增长!

当您提供更高分辨率的图像时,您最终会提供必须评估的额外信息。

如果您的分辨率是 10x10 像素,则每张图片有 100 个像素,而每位数字有 10 张图像,即 每位数字有 1000 像素

现在,如果您将分辨率加倍至 20x20 像素,则每张图像将产生 400 像素或每位数字 4000 像素

换句话说:增加分辨率会导致您必须评估每个数字的像素数量呈指数级增加。

添加更多(不必要的)像素会增加出错的可能性:

通常,在机器学习中,图片会被精简到最低限度(大小和颜色),以尽可能减少出错的空间。当您有更多像素时,算法可能会学到一些与图像中的实际形式完全无关的像素。

关于java - 神经网络训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631325/

相关文章:

python - model.fit 给出 InvalidArgumentError : Graph execution error:

python - 我如何在 TensorFlow 中使用我自己的图像?

Java GUI 测试与图像识别?

java - IllegalMonitorStateException Java Android

java - 必须有返回类型或回调作为最后一个参数 Retrofit2 Android?

machine-learning - 如何在CNTK中实现序列分类LSTM网络?

java - 使用代码输入数据进行反向传播

OpenCV - 在 fitEllipse() 的轮廓内拟合叶子

java - 服务端如何返回 JWT token 给客户端?

java - 重构子类 - 如何组合实例方法?