我正在尝试使用python的tensorflow来识别一些大小为28x28的roi。我第一次使用这个代码:https://github.com/niektemme/tensorflow-mnist-predict/blob/master/predict_2.py,他识别10中的4/5数字,所以我尝试修改代码,现在我可以看到精度的百分比,并识别10中的8/9数字。问题是我需要识别所有数字,我看看如果我改变28x28内的20x20的位置它识别每个数字,那么,tensorflow如何工作?我读了很多关于张量流的文档,我不明白它是如何工作的,为什么如果我移动1x像素的20x20完全改变数字呢? 这是我的号码:https://imgur.com/a/juOLd,它认为它像5,但是如果我将它向下移动1个像素并向右移动1个像素,它会发现它像3个,为什么?
答案 0 :(得分:0)
tldr;它不是tensorflow
,而是model
首先,tensorflow
不做预测或任何事情。它只是一个快速的数学运算库,增加了对automatic gradients
和其他一些好功能的支持,这对机器学习非常有用。
现在,在您的问题上,为什么向下移动1个像素会改变预测?它是模型(或更具体地说是数据)。您的模型已经(从数据中)学到了与图像中数字位置相关的内容。因此,在某种程度上改变它,使模型预测其他东西 现在,为了更清楚地理解它,您可以尝试在MNIST数据集上训练模型,然后在现实生活中拍摄一些(黑底白字)数字。几乎可以肯定,您的模型会预测这个数字是错误的,因为MNIST数据集不是通用数字的真实表示。有许多因素会影响它的输出,例如房间内的照明,相机配置,图像中数字的相对大小等。