前言:
到了要开始处理资料的部分,因为影像资料会有档案太大或是大小不一的问题,所以都要先预设成固定的格式来模拟训练
程序码:
方案一
train = tfds.load('mnist', split='train', as_supervised=True) #训练资料
test = tfds.load('mnist', split='test', as_supervised=True) #测试资料
def format_image(image, label):
image = tf.cast(image, dtype=tf.float32)
image = image / 255.0
return image, label
BATCH_SIZE = 32
BUFFER_SIZE = 10000
train_batches = train.cache().shuffle(BUFFER_SIZE).map(format_image).batch(BATCH_SIZE).prefetch(1)
test_batches = test.cache().map(format_image).batch(BATCH_SIZE).prefetch(1)
cache: 将资料全部载入快取记忆体,可加速模型训练
shuffle: 洗牌以打乱资料顺序
map: 使用某个函数来处理资料,这里用到的是自己写的 format_image 函数
batch: 将数个资料组成一个批次,这里一批包含 32 个样本: (image, label)
prefetch: 在 GPU 或 TPU 训练资料的过程,预先用 CPU 准备好下一批资料,可加速训练过程
(TPU)张量处理单元:是一种定制化的 ASIC 晶片,为谷歌的主要产品提供了计算支持,包括翻译、照片、搜索助理和 Gmail 等,并专门用於机器学习工作负载
方案二
# 资料路径
DATASET_PATH = 'D://20210901/Demo1/dogImages'
# 影像大小
IMAGE_SIZE = (224, 224)
# 影像类别数
NUM_CLASSES = 2
# 若 GPU 记忆体不足,可调降 batch size 或冻结更多层网路
BATCH_SIZE = 8
# 冻结网路层数
FREEZE_LAYERS = 2
# Epoch 数
NUM_EPOCHS = 20
# 模型输出储存的档案
WEIGHTS_FINAL = 'model-resnet50-final.h5'
# 透过 data augmentation 产生训练与验证用的影像资料
train_datagen = ImageDataGenerator(rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
channel_shift_range=10,
horizontal_flip=True,
fill_mode='nearest')
train_batches = train_datagen.flow_from_directory(DATASET_PATH + '/train',
target_size=IMAGE_SIZE,
interpolation='bicubic',
class_mode='categorical',
shuffle=True,
batch_size=BATCH_SIZE)
valid_datagen = ImageDataGenerator()
valid_batches = valid_datagen.flow_from_directory(DATASET_PATH + '/valid',
target_size=IMAGE_SIZE,
interpolation='bicubic',
class_mode='categorical',
shuffle=False,
batch_size=BATCH_SIZE)
# 输出各类别的索引值
for cls, idx in train_batches.class_indices.items():
print('Class #{} = {}'.format(idx, cls))
<<: D7 - 如何用 Google Apps Script 将 Google 表单的回应即时同步在多个行事历上?
>>: #7 - The Node Event Emitter
Ev3 是 LEGO® MINDSTORMS® 乐高公司发展的可程序机器人,有原生的专用语法,且可使...
前言 不是只有JavaScript 或 JQuery 才可以做出动画,现在连CSS也可以啦,於是我就...
教材网址 https://coding104.blogspot.com/2021/06/java-V...
回顾一下昨天提到的,我们希望透过将 attention 机制加到 LSTM 中藉此找出每段语音中重要...
前言: 在试做的时候分成两个档案 firebase 设定的时候好像只能用一次 不然会报错 所以我写在...