- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想预测用鼠标写的数字。
我使用TensorFlow创建了一个模型,并训练了整个数据集。
当我写一个数字并尝试预测时,它给我的答案准确性较低。
请提出一些克服此问题的方法。
源代码是:
import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import tensorflow as tf
def plot_digit(data):
image = data.reshape(28, 28)
plt.imshow(image, interpolation='nearest')
plt.axis('off')
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)
])
predictions = model(x_train[:1]).numpy()
tf.nn.softmax(predictions).numpy()
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss_fn(y_train[:1], predictions).numpy()
model.compile(optimizer='adam',
loss=loss_fn,
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10)
model.evaluate(x_test, y_test, verbose=2)
drawing = False # true if mouse is pressed
pt1_x , pt1_y = None , None
# mouse callback function
def line_drawing(event,x,y,flags,param):
global pt1_x,pt1_y,drawing
if event==cv2.EVENT_LBUTTONDOWN:
drawing=True
pt1_x,pt1_y=x,y
elif event==cv2.EVENT_MOUSEMOVE:
if drawing==True:
cv2.line(img,(pt1_x,pt1_y),(x,y),color=(255,255,255),thickness=3)
pt1_x,pt1_y=x,y
elif event==cv2.EVENT_LBUTTONUP:
drawing=False
cv2.line(img,(pt1_x,pt1_y),(x,y),color=(255,255,255),thickness=3)
img = np.zeros((200,200), np.uint8)
cv2.namedWindow('test draw')
cv2.setMouseCallback('test draw',line_drawing)
while(1):
cv2.imshow('test draw',img)
if cv2.waitKey(1) & 0xFF == 27:
break
cv2.destroyAllWindows()
img = Image.fromarray(img)
foo = img.resize((28,28),Image.ANTIALIAS)
foo = np.array(foo)/255.0
plot_digit(foo)
np.argmax(model.predict(foo.reshape(1,28,28)))
最佳答案
这可能是很多事情。一些想法:
1)也许是调整大小?在thickness=3
上使用200,200
时,将其大小调整为thickness=1
后,它变得更像(28,28)
,后者不再代表MNIST数据集。尝试可视化一些MNIST数据和鼠标写入的数据,并查看它们是否真的相似(在(28,28)
级别)。
2)也许模型过度适合手写数字?考虑在模型中使用卷积层,我认为在这种情况下可以缓解此问题。
3)也许是可视化?我看到您在可视化图像时同时使用了ANTIALIAS
和nearest
。尝试删除nearest
。您还能看到您的期望吗?
如果您可以发布一些图像,则可以进行绘制。
关于python - 预测鼠标书写的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61983242/
我正在开发 GPA 计算器,而且我是 C 语言新手。我在 Ubuntu 12 中使用 gvim 编写此代码,并在终端中使用 gcc 进行编译。 这是我到目前为止的代码。我还想包含一种检查方法,以确保用
我正在使用tinymce 编辑网络应用程序中的某些字段。我需要一个带有一些规范的 html 结果(编辑后)。 例如:当我按 Entertinymce 时,创建一个新段落(没关系,我知道可以更改此行为,
我正在尝试在EmguCV(OpenCV C#包装器)图像上绘制多于一行的字符串。但它表明EmguCV无法识别新行“\ r \ n”字符。 如何实现呢?另外,如何获取文本高度,以便可以手动设置下一个字符
我有一个 richTextBox,一个人将在其中阅读患者的医疗记录。 我添加了一个按钮,用于将今天的日期(以 DD/MM/YYYY 格式)添加到 richTextBox 中。当有人需要更新病人的记录时
我是一名优秀的程序员,十分优秀!