【LSP】TF2实现一个简单的服装分类任务

北巷流诗   ·   发表于 2个月前   ·   编程代码

大家都会比较Tensorflow2和pytorch之间孰优孰劣,但是我们也并不是非要二者选一,两者都是深度学习的工具,其实我们或多或少应该了解一些比较好。 就好比,PyTorch是冲锋枪,TensorFlow是步枪,在上战场前,我们可以选择带上冲锋枪还是步枪,但是在战场上,可能手中的枪支没有子弹了,你只能在地上随便捡了一把枪。 很多时候,用Pytorch还是Tensorflow的选择权不在自己。

此外,了解了TensorFlow,大家才能更好的理解PyTorch和TF究竟有什么区别。我见过有的大佬是TF和PyTorch一起用在一个项目中,数据读取用PyTorch然后模型用TF构建。

总之,大家有时间有精力的话,顺便学学TF也不亏,更何况TF2.0现在已经优化了很多。本系列预计用3节课来简单的入门一下Tensorflow2.

和PyTorch的第一课一样,我们直接做一个简单的小实战。MNIST手写数字分类,Fashion MNIST时尚服装分类。

1 Tensorflow的安装
安装TensorFlow的方法很简单,就是在控制台执行:

pip install tensorflow --user
这里的--user是赋予这个命令执行权限的,一般我都会带上。

2 数据集构建
# keras是TF的高级API,用起来更加的方便,一般也是用keras。
import tensorflow as tf
from tensorflow import keras
import numpy as np
导入需要用到的库函数. 正如torchvision.datasets中一样,keras.datasets中也封装了一些常用的数据集。

fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
print('train_images shape:',train_images.shape)
print('train_labels shape:',train_labels.shape)
print('test_images shape:',test_images.shape)
print('test_labels shape:',test_labels.shape)
输出结果是:


训练数据集中有60000个样本,每一个样本和MNIST手写数字大小是一样的,是28×2828×28大小的,然后每一个样本有一个标签,这个标签和MNIST也是一样的,是从0到9,是一个十分类任务。

来看一下这些类别有哪些:

这里学学单词吧:

T-shirt就是T型的衬衫,就是短袖,我感觉前面没有扣子的那种也叫T-shirt;
Shirt就是长袖的那种衬衫;
Trouser是裤子;
pullover是毛衣,套头毛衣,就是常说的卫衣吧感觉;
dress连衣裙;
coat是外套;
sandal是凉鞋;
sneaker是运动鞋;
ankle boot是短靴,是到脚踝的那种靴子;
这里补充一个吧,sweater,是毛线衣,运动衫,这个和pullover有些类似,个人感觉主要的区分在于运动系列的可以叫做sweater,其他的毛衣卫衣是pullover。
运动短袖T-shirt+运动卫衣sweater是我秋天去健身房的穿搭。

2 预处理
这里不做图像增强之类的了,上面的数据中,图像像素值是从0到255的,我们要把这些标准化成0到1的范围。

train_images = train_images / 255.0
test_images = test_images / 255.0
3 构建模型
# 模型搭建
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
这就是一个用keras构建简单模型的例子:

0 Reply   |  Until 2个月前 | 4791 View
LoginCan Publish Content