Python 我是否正确地进行了数据扩充?

Python 我是否正确地进行了数据扩充?,python,tensorflow2.0,tf.keras,Python,Tensorflow2.0,Tf.keras,有人告诉我,使用数据增强可以帮助我对从文档中提取的手写数字进行更准确的预测(因此它不在我使用的MNIST数据集中),所以我在模型中使用了它。然而,我很好奇我是否做对了,因为在使用数据增强之前,训练集的大小是60000,但是在添加数据增强之后,它下降到了每个历元3750?我这样做对吗 在中的数据扩充部分之后,我对其进行了调整,以便它能够帮助我创建和训练模型。在函数中,我还遗漏了一些可选参数,这些参数目前我还不太了解 我使用的当前模型来自我从中得到的一个答案,因为它比我为了尝试而拼凑的第二个模型性能

有人告诉我,使用数据增强可以帮助我对从文档中提取的手写数字进行更准确的预测(因此它不在我使用的MNIST数据集中),所以我在模型中使用了它。然而,我很好奇我是否做对了,因为在使用数据增强之前,训练集的大小是60000,但是在添加数据增强之后,它下降到了每个历元3750?我这样做对吗

在中的数据扩充部分之后,我对其进行了调整,以便它能够帮助我创建和训练模型。在函数中,我还遗漏了一些可选参数,这些参数目前我还不太了解

我使用的当前模型来自我从中得到的一个答案,因为它比我为了尝试而拼凑的第二个模型性能更好。我想我所做的唯一改变是使用稀疏的分类交叉熵来代替丢失,因为我对数字进行分类,手写字符不能属于两类数字,嗯,对吗

def createModel():
model=keras.models.Sequential()
#第一次会议和maxpool
添加(keras.layers.Conv2D(40,(5,5),padding=“same”,activation='relu',input_shape=(28,28,1)))
add(keras.layers.MaxPoolig2D(池大小=(2,2),跨步=(2,2)))
#第二次会议和maxpool
添加(keras.layers.Conv2D(200,(3,3),padding=“same”,activation='relu'))
add(keras.layers.MaxPoolig2D(池大小=(3,3),跨步=(1,1)))
#第三次会议和maxpool
model.add(keras.layers.Conv2D(512,(3,3),padding=“valid”,activation='relu'))
add(keras.layers.MaxPoolig2D(池大小=(3,3),跨步=(1,1)))
#将DIM从2d减少到1d
model.add(keras.layers.flatte())
model.add(keras.layers.density(单位=100,激活=relu'))
#防止过度装配的脱落
模型。添加(keras。层。辍学(0.5))
#最终完全连接层
添加模型(keras.layers.Dense(10,激活='softmax'))
model.compile(优化器='adam',
损失=“稀疏”\u分类”\u交叉熵',
指标=[‘准确度’])
回归模型
培训由一个单独的功能完成,这就是我插入数据增强部分的地方:

def列车模型(文件模型,纪元=5,新建=False,显示=False):
model=createModel()
(x_列,y_列),(x_测试,y_测试)=keras.dataset.mnist.load_data()
x_-train=x_-train.重塑((60000,28,28,1))/255.0
x_测试=x_测试。重塑((10000,28,28,1))/255.0
x_gen=np.array(x_train,copy=True)
y_gen=np.array(y_train,copy=True)
datagen=keras.preprocessing.image.ImageDataGenerator(featurewise\u center=True,featurewise\u std\u normalization=True,rotation\u range=20)
数据生成拟合(x_生成)
x_列=np。连接((x_列,x_根),轴=0)
y_列=np。连接((y_列,y_根),轴=0)
#如果存在上一个模型而不需要新模型。。
如果(os.path.exists(file\u model)=True,create\u new==False):
模型=keras.models.load\u模型(文件模型)
其他:
历史=模型拟合\u生成器(数据生成流(x\u序列,y\u序列),年代=年代,验证\u数据=(x\u测试,y\u测试))
model.save(文件\模型)
如果(show==True):
model.summary()
回归模型
我希望它将大大有助于正确识别手写字符,假设它被正确使用。但我甚至不确定我是否做得正确,以至于它对模型的准确性有很大影响

编辑:它确实有助于识别一些提取的字符,但是模型仍然没有正确地获取大部分提取的字符,这让我怀疑我是否正确地实现了它