Tensorflow 使用MobileNetV1的多数字分类器
我想训练一个模型能够对图像中的16位数进行分类,位数是常量。因此,我创建了类似这些图像的数据集(在SUN数据集背景上以不同字体和大小随机打印16个数字): 我的训练数据集是大约3000张图片和600张图片进行验证 所以我想使用MobileNetV1作为功能提取器,并为每个数字连接到16个softmax输出层 下面是我创建模型的代码片段Tensorflow 使用MobileNetV1的多数字分类器,tensorflow,neural-network,conv-neural-network,text-classification,mobilenet,Tensorflow,Neural Network,Conv Neural Network,Text Classification,Mobilenet,我想训练一个模型能够对图像中的16位数进行分类,位数是常量。因此,我创建了类似这些图像的数据集(在SUN数据集背景上以不同字体和大小随机打印16个数字): 我的训练数据集是大约3000张图片和600张图片进行验证 所以我想使用MobileNetV1作为功能提取器,并为每个数字连接到16个softmax输出层 下面是我创建模型的代码片段 base_model = MobileNet(input_shape=None, alpha=0.25,
base_model = MobileNet(input_shape=None,
alpha=0.25,
depth_multiplier=1,
include_top=False,
weights='imagenet,
input_tensor=None,
pooling=None)
x = base_model.output
x = layers.AvgPool2D()(x)
digits = []
for i in range(16):
temp = layers.Conv2D(10, 1, 1, padding='same', name=str(i) + '_digits')(x)
temp = layers.Dense(10, activation='softmax')(temp)
digits.append(temp)
model = Model(inputs=base_model.inputs, outputs=digits)
model.compile(optimizer=optimizers.RMSprop(), loss='categorical_crossentropy',
metrics=['accuracy'])
因此,我的数据集图片大小为(650,65),序列张量形状为(3000650,65,3),归一化值介于-1和1之间
我的火车标签是16个一个热张量的数组,形状为(163000,10)
我的模型编译成功并开始训练,但我的损失和val_损失在这段时间内并没有得到改善
基本上我想创建这样的模型,因为这个模型在数字分类问题上工作得很好。
此模型体系结构的顶部类似于MobileNetV1,输入是大小调整器和规格化器块。您是否尝试过减少学习rate@TT:谢谢你的回复,没有,我会试试的,以防万一,我的模型看起来还可以吗?@Shayantabaee:我认为使用目标检测比使用图像分类更有效。要了解有关对象检测的更多信息,可以参考链接或链接。在您的情况下,边界框,即第一个数字、第二个数字的位置等。。将几乎是固定的,这样可以节省大量的精力。谢谢@TensorflowSupport:谢谢,我会试试看你是否尝试过减少学习rate@TT:谢谢回复,不,我没有,我会试试,以防万一我的模型看起来没问题吗?@ShayanTabatabaee:我认为使用目标检测比使用图像分类更有效。要了解有关对象检测的更多信息,可以参考链接或链接。在您的情况下,边界框,即第一个数字、第二个数字的位置等。。将几乎是固定的,这样可以节省大量的精力。谢谢@谢谢,我会试试的