# 06-TensorFlow 自制数据集

## 1.数据文件介绍

train_path = './mnist_image_label/mnist_train_jpg_60000/'
train_txt = './mnist_image_label/mnist_train_jpg_60000.txt'
x_train_savepath = './mnist_image_label/mnist_x_train.npy'
y_train_savepath = './mnist_image_label/mnist_y_train.npy'

test_path = './mnist_image_label/mnist_test_jpg_10000/'
test_txt = './mnist_image_label/mnist_test_jpg_10000.txt'
x_test_savepath = './mnist_image_label/mnist_x_test.npy'
y_test_savepath = './mnist_image_label/mnist_y_test.npy'


## 2.生成数据集

[En]

We want to convert the picture into discrete data, that is, in the form of an array (an array of eigenvalues and an array of tags).


def generateds(path, txt):
f = open(txt, 'r')
f.close()
x, y_ = [], []
for content in contents:
value = content.split()
img_path = path + value[0]
img = Image.open(img_path)
img = np.array(img.convert('L'))
img = img / 255.

x.append(img)
y_.append(value[1])

x = np.array(x)
y_ = np.array(y_)
y_ = y_.astype(np.int64)
print("x的类型", x.shape)
print("y_的类型", y_.shape)
return x, y_


[En]

Input the path of the training set file to generate the dataset, and get a matrix array of 60000 eigenvalues of 28 to 28 and an one-dimensional array of 60000 label values.

## 3.存储数据集

[En]

If you have to read the picture file every time, and then generate the dataset array, it will take a lot of time; we can save the generated dataset array as a file, and the next time we want to use it, we can read the dataset array file directly, which is relatively fast.

def load_data():

if os.path.exists(x_train_savepath) and os.path.exists(y_train_savepath) and os.path.exists(
x_test_savepath) and os.path.exists(y_test_savepath):
x_train = np.reshape(x_train_save, (len(x_train_save), 28, 28))
x_test = np.reshape(x_test_save, (len(x_test_save), 28, 28))

else:
print('-------------Generate Datasets-----------------')
print("生成训练集")
x_train, y_train = generateds(train_path, train_txt)
print("生成测试集")
x_test, y_test = generateds(test_path, test_txt)

print('-------------Save Datasets-----------------')
x_train_save = np.reshape(x_train, (len(x_train), -1))
x_test_save = np.reshape(x_test, (len(x_test), -1))
np.save(x_train_savepath, x_train_save)
np.save(y_train_savepath, y_train)
np.save(x_test_savepath, x_test_save)
np.save(y_test_savepath, y_test)
return x_train, y_train, x_test, y_test


1.初始未生成数据集数组文件

2.当有已生成的数据集数组文件时, 就可以直接载入

## 4.使用数据集

[En]

Then we can use the dataset to train the neural network. here is the complete code of the project.

image_preprocess.py

from PIL import Image
import numpy as np
import os

train_path = './mnist_image_label/mnist_train_jpg_60000/'
train_txt = './mnist_image_label/mnist_train_jpg_60000.txt'
x_train_savepath = './mnist_image_label/mnist_x_train.npy'
y_train_savepath = './mnist_image_label/mnist_y_train.npy'

test_path = './mnist_image_label/mnist_test_jpg_10000/'
test_txt = './mnist_image_label/mnist_test_jpg_10000.txt'
x_test_savepath = './mnist_image_label/mnist_x_test.npy'
y_test_savepath = './mnist_image_label/mnist_y_test.npy'

def generateds(path, txt):
f = open(txt, 'r')
f.close()
x, y_ = [], []
for content in contents:
value = content.split()
img_path = path + value[0]
img = Image.open(img_path)
img = np.array(img.convert('L'))
img = img / 255.

x.append(img)
y_.append(value[1])

x = np.array(x)
y_ = np.array(y_)
y_ = y_.astype(np.int64)
print("x的类型", x.shape)
print("y_的类型", y_.shape)
return x, y_

if os.path.exists(x_train_savepath) and os.path.exists(y_train_savepath) and os.path.exists(
x_test_savepath) and os.path.exists(y_test_savepath):
x_train = np.reshape(x_train_save, (len(x_train_save), 28, 28))
x_test = np.reshape(x_test_save, (len(x_test_save), 28, 28))

else:
print('-------------Generate Datasets-----------------')
print("生成训练集")
x_train, y_train = generateds(train_path, train_txt)
print("生成测试集")
x_test, y_test = generateds(test_path, test_txt)

print('-------------Save Datasets-----------------')
x_train_save = np.reshape(x_train, (len(x_train), -1))
x_test_save = np.reshape(x_test, (len(x_test), -1))
np.save(x_train_savepath, x_train_save)
np.save(y_train_savepath, y_train)
np.save(x_test_savepath, x_test_save)
np.save(y_test_savepath, y_test)
return x_train, y_train, x_test, y_test


image_identification_train.py

import image_preprocess
import tensorflow as tf

x_train, y_train, x_test, y_test = image_preprocess.load_data()

model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])

loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
metrics=['sparse_categorical_accuracy'])

model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
model.summary()


## 5.数据增强（增大数据量）

[En]

The code after introducing the data enhancement operation

image_identification_train.py

import image_preprocess
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

x_train, y_train, x_test, y_test = image_preprocess.load_data()

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)

image_gen_train = ImageDataGenerator(
rescale=1. / 1.,
rotation_range=45,
width_shift_range=.15,
height_shift_range=.15,
horizontal_flip=False,
zoom_range=0.5
)
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')
])

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()


Original: https://blog.csdn.net/qq_41865229/article/details/124252868
Author: 鸣鼓ming
Title: 06-TensorFlow 自制数据集

(0)

### 大家都在看

• #### 深度学习环境搭建之cuda、cudnn以及pytorch和torchvision的whl文件安装方法

一、前言 假设已经装好了pycharm、anaconda，并且新建了一个conda虚拟环境（我的虚拟环境名为pytorch）。接下来需要安装新版的显卡驱动，安装cuda、cudnn…

人工智能 2023年7月12日
0196
• #### 深度学习框架如何进行模型训练和参数优化

深度学习框架模型训练和参数优化 深度学习框架是通过使用神经网络模型来解决各种复杂任务的工具。模型训练和参数优化是深度学习的核心任务，在这里我们将详细介绍这个问题，并提供详细的算法原…

人工智能 2024年1月1日
0111
• #### 度量学习和pytorch-metric-learning的使用

度量学习是学习一种特征空间的映射，把特征映射到具有度量属性的空间中，所谓度量属性是指在某种度量距离（可以是欧氏距离、余弦相似性等）下类内距离更小，类间距离更大。有了这种属性之后，就…

人工智能 2023年7月22日
0133
• #### 目标检测（一）目标检测算法综述

目录 目标检测概述 目标检测发展历程与现状 目标检测与识别技术的学习路径 目标检测概述 目标检测作为计算机视觉领域中最根本也是最具有挑战性的问题之一，近年来受到社会各界的广泛研究与…

人工智能 2023年6月15日
0177
• #### Reduction）在深度学习中的应用

问题介绍 本问题探讨了深度学习中的一种常见算法——降维（Reduction）的应用。降维是通过减少特征空间维度来提取数据中的相关信息，并在保持尽可能多的重要信息的同时，减少无关信息…

人工智能 2024年1月1日
0104
• #### 论文笔记 — Learning Representations for Time Series Clustering

文章目录 Learning Representations for Time Series Clustering * Motivation Contribution Model &…

人工智能 2023年6月3日
0186
• #### Pandas groupby在多个列中使用max获取行

正在查找在多个列中具有最大值的组的行： pd.DataFrame([{‘grouper’: ‘a’, ‘col1&#82…

人工智能 2023年7月7日
0144
• #### sensor_msgs::Image消息及其参数

很多的博客直接将原网址复制粘贴过来，这里做一个整理，另外原网址是：https://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/…

人工智能 2023年7月28日
0180
• #### 电商数据应用体系建设总结（一）—— 数据应用架构剖析

什么是数据应用 数据应用是通过各种各样的数据分析方式将数据展示出来，给决策者、管理者、运营等人员透传数据价值的工具，帮助决策者、管理者及时调整战略目标、公司目标、业务目标，帮助运营…

人工智能 2023年7月16日
0165
• #### 花了6个月时间完成本科优秀毕业设计，我做了什么？

目录 1 前言 2 选题 3 技术选型 4 研究过程 5 毕业答辩 6 效果展示 ; 1 前言 从去年12月开题到今年6月结束，整整半年时间都在处理毕业设计的项目。好在取得了一个比…

人工智能 2023年6月23日
0163
• #### 【论文阅读】MD vs FA: Adversarial learning for small object segmentation in infrared images

Wang H, Zhou L, Wang L. Miss detection vs. false alarm: Adversarial learning for small obj…

人工智能 2023年7月10日
0117
• #### 深度学习之图像分类（十八）– Vision Transformer(ViT)网络详解

深度学习之图像分类（十八）Vision Transformer(ViT)网络详解 目录 * – 深度学习之图像分类（十八）Vision Transformer(ViT)…

人工智能 2023年7月27日
0162
• #### 2023最新SSM计算机毕业设计选题大全（附源码+LW）之java教学信息管理辅助系统jszpb

大学计算机专业毕业的，实际上到了毕业的时候，基本属于会与不会之间。说会，是因为学了整套的理论和方法，就是所谓的科班出身。说不会，是因为实践能力极差。 不会的问题，集中体现在毕设的时…

人工智能 2023年6月29日
0192
• #### 分割常用损失函数

目录 1.交叉熵 2.加权交叉熵 3.BCELoss（Binary Cross Entropy） 4.Focal Loss 5.Dice Loss 6.IoU Loss 7.Jac…

人工智能 2023年6月25日
0175
• #### 深度学习地震勘探入门

深度学习地震勘探入门 简介 我们在论文中提供了一个例子，但由于数据不容易下载，许多学生没有通过测试。在这篇文章中，我们详细诠释了这个例子，提供手把手教学，并将数据上传到百度网盘。如…

人工智能 2023年5月25日
0174
• #### Pycharm的安装并且连接已有的Python环境实现自由编译（附中文配置）｜并通过Pycharm实现增加网站访问

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🥇博主昵称：Jovy. 🍟博客主页：Jovy.的博客🥗 感谢点赞👍评论🃌⚇很方便的在线编辑器： Lightly 目录 今日热点 Python环境的配置…

人工智能 2023年7月4日
0173