使用 MNIST 打印更大的数字
Using MNIST to print larger numbers
MNIST 数据集包含所有 10 个数字以供训练。如果我预测 9
,模型将给出 9
作为输出。但是,如果我想预测数字 34.542
怎么办?它会给我一个错误的数字,因为我只训练了 0 到 9。那么,我怎么能预测 > 9
数字呢?
这是我的代码,但我认为它在这里用处不大
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(units=128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(units=128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(units=10, activation=tf.nn.softmax))
# Compiling and optimizing model
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Training the model
model.fit(X_train, y_train, epochs=3)
如评论中所述,您不能将模型直接应用于大量图像。
你必须:
- 应用检测(定位)模型来查找和分离每个数字。每个数字都有一个边界框。
- 将您的分类模型应用于每个边界框的提取图像,以获得对分隔数字的预测。
例如参见this article。
MNIST 数据集包含所有 10 个数字以供训练。如果我预测 9
,模型将给出 9
作为输出。但是,如果我想预测数字 34.542
怎么办?它会给我一个错误的数字,因为我只训练了 0 到 9。那么,我怎么能预测 > 9
数字呢?
这是我的代码,但我认为它在这里用处不大
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(units=128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(units=128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(units=10, activation=tf.nn.softmax))
# Compiling and optimizing model
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Training the model
model.fit(X_train, y_train, epochs=3)
如评论中所述,您不能将模型直接应用于大量图像。 你必须:
- 应用检测(定位)模型来查找和分离每个数字。每个数字都有一个边界框。
- 将您的分类模型应用于每个边界框的提取图像,以获得对分隔数字的预测。
例如参见this article。