Tensorflow Dataset数据集制作专题【二】— 将图片文件制作成Dataset数据集

今晚这个代码愣是调试了好一会,弄的我是满脑子在飘"为啥是这样", 网上博客搜索一堆, 也没有解决我的问题,先看一下这个神奇的存在:

错误代码段
image_rotated = tf.py_func(_rotated, [image], [tf.float64])

报错:
tensorflow.python.framework.errors_impl.InvalidArgumentError: 0-th value returned by pyfunc_0 is float, but expects double
	 [[Node: cond/PyFunc = PyFunc[Tin=[DT_FLOAT], Tout=[DT_DOUBLE], token="pyfunc_0"](cond/Switch_1)]]
	 [[Node: IteratorGetNext_1 = IteratorGetNext[output_shapes=[<unknown>, [?]], output_types=[DT_FLOAT, DT_INT32], 
	 _device="/job:localhost/replica:0/task:0/device:CPU:0"](OneShotIterator_1)]]

很明显, 我的bug定位在Node几点的PyFunc处,而且错误也能看的明白, 是Tin返回值的类型(float)错误, 与expect(double)不一致导致的,明白了这一点, 回头查看调用tf.py_func()函数的地方的输入, 愣是觉得没啥问题呀, 到底哪里出错了, 后来经过我一番琢磨和尝试,终于修改成功了, 将原来的代码修改为如下即可:

正确代码
image_rotated = tf.py_func(_rotated, [image], [tf.float32])

真是坑人不浅啊啊啊......

下面附上详细的将图片文件转换为Dataset数据集的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @ProjectName : 06_create_image_dataset.py
# @DateTime :  2019-11-30 13:32
# @Author : 皮皮虾

# 变化丰富的数据集会使模型的精度和泛化性能成倍的提升
# 一套成熟的代码,可以使开发数据集的工作简化很多


import os
import logging
import argparse
import numpy as np
import tensorflow as tf
from skimage import transform
import matplotlib.pyplot as plt
from sklearn.utils import shuffle


def load_sample(src_path):
    image_path_list = []
    real_label_list = []
    for _dir_ in os.listdir(src_path):
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作数据集的过程可以分为以下几个步骤: 1. 收集数据:从不同来源(例如网站、API、数据库等)收集数据并存储在本地文件数据库中。 2. 数据清洗:对数据进行处理,例如去除重复数据、处理缺失值、标准化数据等。 3. 数据划分:将数据集分为训练集、验证集和测试集。通常将数据集按照 6:2:2 的比例划分为训练集、验证集和测试集。 4. 数据编码:将文本或图像数据编码数字,以便机器学习算法能够理解和处理。 5. 数据增强:对数据进行增强,例如旋转、翻转、裁剪等,以提高模型的泛化能力。 在 TensorFlow 中可以使用 tf.data API 加载和处理数据集。可以使用 tf.data.Dataset.from_tensor_slices() 方法将 NumPy 数组、张量或 Pandas DataFrame 转换为数据集。然后可以使用数据集的方法进行数据处理和增强,例如 map()、shuffle()、batch() 等。 下面是一个简单的示例代码,演示如何使用 tf.data API 加载和处理数据集: ```python import tensorflow as tf import numpy as np # 生随机数据 X = np.random.rand(100, 10) y = np.random.randint(0, 2, size=(100,)) # 将数据转换为数据集 dataset = tf.data.Dataset.from_tensor_slices((X, y)) # 对数据集进行处理和增强 dataset = dataset.shuffle(buffer_size=100).batch(10) # 遍历数据集 for batch in dataset: print(batch) ``` 在这个例子中,我们生了一个随机的数据集,然后使用 tf.data.Dataset.from_tensor_slices() 方法将数据转换为数据集。接着,我们使用 shuffle() 方法对数据集进行随机化处理,并使用 batch() 方法将数据集大小为 10 的批次。最后,我们遍历数据集并打印出每个批次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值