Tensorflow2 如何扩展现有数据集(缩放、随机旋转、水平翻转、平移等),从而提高模型的准确率 -- Tensorflow自学笔记14

实际生活中的数据集,往往不是标准的数据,而是有倾斜角度、有旋转、有偏移的数据,为了提高数据集的真实性,提高模型预测的准确率,可以用ImageDataGenerator函数来扩展数据集

复制代码
import tensorflow as tf

from tensorflow.keras.preprocessing.image import ImageDataGenerator

image_gen_train = ImageDataGenerator(

          rescale=1./255, #原像素值 0~255 归至 0~1 
          rotation_range=45, #随机 45 度旋转
          width_shift_range=.15, #随机宽度偏移 [-0.15,0.15)
          height_shift_range=.15,#随机高度偏移 [-0.15,0.15)
          horizontal_flip=True,#随机水平翻转
          zoom_range=0.5 #随机缩放到 [1-50%,1+50%]

MNIST数据集增强

复制代码
import tensorflow as tf

from tensorflow.keras.preprocessing.image import ImageDataGenerator



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

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1) # 数据增强函数的输入要求是 4 维,通过 reshape 调整,给数据增加一个维度,从(60000, 28, 28)reshape为(60000, 28, 28, 1)



image_gen_train = ImageDataGenerator(

rescale=1. / 1., # 如为图像,分母为255时,可归至0~1

rotation_range=45, # 随机45度旋转

width_shift_range=.15, # 宽度偏移

height_shift_range=.15, # 高度偏移

horizontal_flip=False, # 水平翻转

zoom_range=0.5 # 将图像随机缩放阈量50%

)

image_gen_train.fit(x_train)



model = tf.keras.models.Sequential([

tf.keras.layers.Flatten(),

tf.keras.layers.Dense(128, activation='relu'),

tf.keras.layers.Dense(10, activation='softmax')

])



model.compile(optimizer='adam',

loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),

metrics=['sparse_categorical_accuracy'])



model.fit(image_gen_train.flow(x_train, y_train, batch_size=32), epochs=5, validation_data=(x_test, y_test),

validation_freq=1)

model.summary()

数据增强后,图片对比,发现,有的旋转了,有的放大了,有的旋转了。

相关推荐
汽车仪器仪表相关领域11 分钟前
Kvaser Leaf Light HS v2 M12:5 针 M12 NMEA 2000 接口,海事与工业 CAN 总线测试的防水耐用之选
大数据·网络·人工智能·功能测试·安全性测试
xiaoxiang960918 分钟前
Graphify从入门到精通:用知识图谱彻底改变AI编程效率
人工智能·知识图谱·ai编程
CeshirenTester26 分钟前
航旅纵横APP故障18h后,各项功能才恢复正常
人工智能
_冷眸_27 分钟前
Voyago:龙虾(OpenClaw)驱动的一站式旅行规划套件
人工智能·自然语言处理·aigc·agent·claude code
CM莫问29 分钟前
详解机器学习中的马尔可夫链
人工智能·算法·机器学习·概率论·马尔可夫·马尔科夫
人工智能AI技术32 分钟前
编码基础:ASCII、Unicode、UTF-8 区别与原理
人工智能
城管不管36 分钟前
嵌入模型Embedding Model
java·开发语言·python·embedding·嵌入模型
大龄程序员狗哥37 分钟前
第17篇:词向量(Word2Vec)解析——让文字拥有数学灵魂(原理解析)
人工智能·自然语言处理·word2vec
ElfBoard39 分钟前
飞凌精灵(ElfBoard)技术贴|如何在RK3506开发板上实现UART功能复用
大数据·linux·人工智能·驱动开发·单片机·嵌入式硬件·物联网
Architect_Lee40 分钟前
python3.14.4环境搭建
python