【Tensorflow】tensorflow和keras+读取jpg图像数据格式的MNIST数据集

本文介绍了如何使用TensorFlow 1.x和1.13及以上版本处理jpg格式的MNIST数据集,包括读取图像路径、数据预处理、数据集创建和迭代操作。重点在于展示从jpg图片到TensorFlow Dataset的转换过程。
摘要由CSDN通过智能技术生成

1.数据集介绍

jpg图像数据格式的MNIST数据集:(放在database1文件夹下面)

 

2.tensorflow读取jpg图像数据格式的mnist数据集:

tensorflow1.x的读取方式:

 

 

 

tensorflow1.12以上的读取方式:(最好是1.13.1或者2.x)

https://blog.csdn.net/Black_Friend/article/details/104529859

import tensorflow as tf
import random
import pathlib
data_path = pathlib.Path('./database1/')
print(type(data_path))#<class 'pathlib.WindowsPath'>
all_image_paths = list(data_path.glob('*/*'))  
print(type(data_path.glob('*/*')))#<class 'generator'>
# print(all_image_paths)

all_image_paths = [str(path) for path in all_image_paths]  # 所有图片路径的列表
random.shuffle(all_image_paths)  # 打散
# print(all_image_paths[0:3])

image_count = len(all_image_paths)
print('image_count: ',image_count)

label_names = sorted(item.name for item in data_path.glob('*/') if item.is_dir())
print('label_names: ',label_names)
label_to_index = dict((name, index) for index, name in enumerate(label_names))
print('label_to_index: ',label_to_index)
all_image_labels = [label_to_index[pathlib.Path(path).parent.name] for path in all_image_paths]



db_train = tf.data.Dataset.from_tensor_slices((all_image_paths, all_image_labels))

def load_and_preprocess_from_path_label(path, label):
    
    image = tf.io.read_file(path)  # 读取图片
    image = tf.image.decode_jpeg(image, channels=3)
    image = tf.cast(image, dtype=tf.float32) / 255.0
    # image = tf.image.resize(image, [28, 28])  # 原始图片大小为(100, 100, 3),重设为(192, 192)
    # image /= 255.0  # 归一化到[0,1]范围
    
    label = tf.cast(label, dtype=tf.int32)
    label = tf.one_hot(label, depth=10)
    return image, label

db_train.shuffle(1000)
db_train.map(load_and_preprocess_from_path_label)
db_train.batch(64)
db_train.repeat(2)
print(type(db_train))#<class 'tensorflow.python.data.ops.dataset_ops.DatasetV1Adapter'>
print(db_train.output_shapes)#(TensorShape([]), TensorShape([]))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值