首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用TFrecords的TPU中,使用图像分割来消除训练损失

在使用TFrecords的TPU中,使用图像分割来消除训练损失
EN

Stack Overflow用户
提问于 2020-06-15 16:40:28
回答 1查看 334关注 0票数 1

我是一个初学者,试图在Kaggle内核中使用Tensorflow处理TPU。我之前在GPU中使用数据集训练了一个Unet模型,现在我正在尝试在TPU中实现它。我从数据集图像和蒙版中创建了一个tfrecord,然后TFrecord返回图像和蒙版。当我尝试在TPU中训练时,损失总是Nan,即使度量精度是正常的。由于这是我在GPU中使用的相同模型和损失,我猜测问题出在tfrecord或加载数据集上。加载数据的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 def decode_image(image_data):
    image = tf.image.decode_jpeg(image_data, channels=3)
    image = tf.cast(image, tf.float32) / (255.0)  # convert image to floats in [0, 1] range
    image = tf.reshape(image, [*IMAGE_SIZE, 3]) # explicit size needed for TPU
    return image

def decode_image_mask(image_data):
    image = tf.image.decode_jpeg(image_data, channels=3)
    image = tf.cast(image, tf.float64) / (255.0)  # convert image to floats in [0, 1] range
    image = tf.reshape(image, [*IMAGE_SIZE, 3]) # explicit size needed for TPU
    image=tf.image.rgb_to_grayscale(image)
    image=tf.math.round(image)
    return image

def read_tfrecord(example):
    TFREC_FORMAT = {
        "image": tf.io.FixedLenFeature([], tf.string), # tf.string means bytestring
        "mask": tf.io.FixedLenFeature([], tf.string),  # shape [] means single element
    }
    example = tf.io.parse_single_example(example, TFREC_FORMAT)
    image = decode_image(example['image'])
    mask=decode_image_mask(example['mask'])
    return image, mask 



def load_dataset(filenames, ordered=False):
    # Read from TFRecords. For optimal performance, reading from multiple files at once and
    # disregarding data order. Order does not matter since we will be shuffling the data anyway.

    ignore_order = tf.data.Options()
    if not ordered:
        ignore_order.experimental_deterministic = False # disable order, increase speed

    dataset = tf.data.TFRecordDataset(filenames, num_parallel_reads=AUTO) # automatically interleaves reads from multiple files
    dataset = dataset.with_options(ignore_order) # uses data as soon as it streams in, rather than in its original order
    dataset = dataset.map(read_tfrecord, num_parallel_calls=AUTO)
    return dataset



def get_training_dataset():
    dataset = load_dataset(TRAINING_FILENAMES)
    dataset = dataset.repeat() # the training dataset must repeat for several epochs
    dataset = dataset.shuffle(2048)
    dataset = dataset.batch(BATCH_SIZE,drop_remainder=True)
    dataset = dataset.prefetch(AUTO) # prefetch next batch while training (autotune prefetch buffer size)
    return dataset

def get_validation_dataset(ordered=False):
    dataset = load_dataset(VALIDATION_FILENAMES, ordered=ordered)
    dataset = dataset.batch(BATCH_SIZE)
    dataset = dataset.cache()
    dataset = dataset.prefetch(AUTO) # prefetch next batch while training (autotune prefetch buffer size)
    return dataset


def count_data_items(filenames):
    # the number of data items is written in the name of the .tfrec files, i.e. flowers00-230.tfrec = 230 data items
    n = [int(re.compile(r"-([0-9]*)\.").search(filename).group(1)) for filename in filenames]
    return np.sum(n)

那么,我做错了什么呢?

EN

回答 1

Stack Overflow用户

发布于 2020-06-16 11:29:28

事实证明,问题是我将数据分批,并将其分批到20以正确查看matplotlib中的图像和掩码,这搞乱了数据发送到模型的方式,因此出现了Nan损失。制作另一个数据集的副本并使用该副本查看图像,同时发送原始数据集进行训练,解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62392904

复制
相关文章
使用TPU训练模型
如果想尝试使用Google Colab上的TPU来训练模型,也是非常方便,仅需添加6行代码。
lyhue1991
2020/07/20
9320
使用TPU训练模型
【tensorflow2.0】使用TPU训练模型
如果想尝试使用Google Colab上的TPU来训练模型,也是非常方便,仅需添加6行代码。
西西嘛呦
2020/08/26
1.2K0
一文教你在Colab上使用TPU训练模型
Google Colab免费为TPUs提供实验支持!在本文中,我们将讨论如何在Colab上使用TPU训练模型。具体来说,我们将通过在TPU上训练huggingface transformers库里的BERT来进行文本分类。
磐创AI
2020/09/14
5.7K0
TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器
是否能够更快地训练和提供对象检测模型?我们已经听到了这种的反馈,在今天我们很高兴地宣布支持训练Cloud TPU上的对象检测模型,模型量化以及并添加了包括RetinaNet和MobileNet改编的RetinaNet在内的新模型。本文将引导你使用迁移学习在Cloud TPU上训练量化的宠物品种检测器。
AiTechYun
2018/07/27
4K0
TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器
使用图像分割来做缺陷检测的一个例子
作者:Vinithavn 编译:ronghuaiyang 导读 一个简单的例子,详细的过程和代码说明。 1. 介绍 什么是物体检测? 给定一张图像,我们人类可以识别图像中的物体。例如,我们可以检测
OpenCV学堂
2021/06/08
2.8K0
使用图像分割,绕不开的Dice损失:Dice损失理论+代码
在很多关于医学图像分割的竞赛、论文和项目中,发现 Dice 系数(Dice coefficient) 损失函数出现的频率较多,这里整理一下。使用图像分割,绕不开Dice损失,这个就好比在目标检测中绕不开IoU一样。
睡魔的谎言
2020/11/25
10K0
图像分类任务中的损失
图像分类是机器学习中的一项重要任务。这项任务有很多比赛。良好的体系结构和增强技术都是必不可少的,但适当的损失函数现在也是至关重要的。
AI研习社
2019/11/18
2.2K0
图像分类任务中的损失
使用caffe训练自己的图像数据
http://blog.csdn.net/quincuntial/article/details/50611459,leveldb格式对应调整即可。
Tyan
2022/05/09
3510
使用caffe训练自己的图像数据
Colab超火的Keras/TPU深度学习免费实战,有点Python基础就能看懂的快速课程
想要真的了解深度学习,除了看视频,拿数据和算力真枪实弹的练手可能比各种理论知识更重要。
大数据文摘
2019/05/15
1K0
Colab超火的Keras/TPU深度学习免费实战,有点Python基础就能看懂的快速课程
Colab 超火的 Keras/TPU 深度学习免费实战,有点 Python 基础就能看懂的快速课程
想要真的了解深度学习,除了看视频,拿数据和算力真枪实弹的练手可能比各种理论知识更重要。
新智元
2019/05/17
1K0
Colab 超火的 Keras/TPU 深度学习免费实战,有点 Python 基础就能看懂的快速课程
Colab超火的Keras/TPU深度学习免费实战,有点Python基础就能看懂的快速课程
想要真的了解深度学习,除了看视频,拿数据和算力真枪实弹的练手可能比各种理论知识更重要。
统计学家
2019/05/16
1.1K0
Colab超火的Keras/TPU深度学习免费实战,有点Python基础就能看懂的快速课程
Tensorflow使用TFRecords和tf.Example
参考 tf.python_io.TFRecordWriter() - 云+社区 - 腾讯云
狼啸风云
2022/09/28
8760
Tensorflow使用TFRecords和tf.Example
TPU使用说明
为了连接到 TPU,我们必须配置一台虚拟机(单独结算)。要注意的是虚拟机和TPU是分别计费的。
marsggbo
2019/05/26
3.4K0
TPU使用说明
tensorflow:使用tfrecords时的注意事项
本文介绍了在使用TensorFlow时,使用tfrecords文件时的注意事项。包括确保字符串输入生成器中的文件名正确,在解码tfrecords时确保类型一致,以及如何处理非浮点数类型等问题。如果遇到问题,应该检查是否正确使用了float32类型,以及是否有文件名错误等。
ke1th
2018/01/02
1.3K0
TPU使用说明
为了连接到 TPU,我们必须配置一台虚拟机(单独结算)。要注意的是虚拟机和TPU是分别计费的。
marsggbo
2018/10/22
2K0
TPU使用说明
使用TensorFlow训练图像分类模型的指南
众所周知,人类在很小的时候就学会了识别和标记自己所看到的事物。如今,随着机器学习和深度学习算法的不断迭代,计算机已经能够以非常高的精度,对捕获到的图像进行大规模的分类了。目前,此类先进算法的应用场景已经涵括到了包括:解读肺部扫描影像是否健康,通过移动设备进行面部识别,以及为零售商区分不同的消费对象类型等领域。
一点人工一点智能
2023/01/15
1.2K0
使用TensorFlow训练图像分类模型的指南
TPU使用说明
为了连接到 TPU,我们必须配置一台虚拟机(单独结算)。要注意的是虚拟机和TPU是分别计费的。
marsggbo
2018/10/16
1.5K0
图像消除纹理
算法:图像消除纹理是首先将原始图像转换为灰度图像,随机选取和卷积核大小相同的正方形框小图像,选取多个图像取平均值来保证纹理特征能够适应整张图像,最终得到小图像之后取加权平均值,类似于高斯模糊一样的效果,这样卷积出来的结果能有效消除图像纹理。
裴来凡
2022/05/29
1.3K0
图像消除纹理
TPU加AutoML:50美元快速训练高效的ImageNet图像分类网络
机器之心整理 参与:刘晓坤、思源 昨日,Jeff Dean 在推特上表示他们在 ImageNet 图像分类上发布了新的 DAWNBench 结果,新型 AmoebaNet-D 网络在 TPU 上实现了最低的训练时间和最少的训练成本。在这一个基准测试上,基于进化策略的 DAWNBench 要比残差网络效果更好,且训练成本降低了一倍。机器之心简要介绍了该基准测试和 AmoebaNet 网络架构,并提供了使用 TPU 进行 AmoebaNet 试验的项目地址。 Jeff Dean 展示的两个基准测试都是 DAWN
机器之心
2018/05/08
7740
TPU加AutoML:50美元快速训练高效的ImageNet图像分类网络
点击加载更多

相似问题

对图像使用TFRecords

10

TPU训练在训练过程中冻结

10

在TPU上边训练边训练RNN

142

消除质量损失,在使用刻度后

11

在TPU上训练时,验证损失变为nan,但在GPU上完全正常

131
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文