从零基础入门Tensorflow2.0 ----一、1.1 实战分类模型(数据读取与展示)

every blog every motto: talk is cheap , show me your code

0. 前言

一起学习,共同进步!
本专栏主要记录为主,部分代码讲解后续完善。

本节实战fashion_mnist 数据集。

1. 代码部分

1. 导入模块

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras

print(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:
    print(module.__name__,module.__version__)

在这里插入图片描述

2. 读取数据

读取fashion_mnist 的数据集。

fashion_mnist = keras.datasets.fashion_mnist
# print(fashion_mnist)
(x_train_all,y_train_all),(x_test,y_test) = fashion_mnist.load_data()
x_valid,x_train = x_train_all[:5000],x_train_all[5000:]
y_valid,y_train = y_train_all[:5000],y_train_all[5000:]
# 打印格式
print(x_valid.shape,y_valid.shape)
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)

在这里插入图片描述

3. 展示数据

展示第一张图片

# 显示图片示例
def show_single_image(img_arr):
    plt.imshow(img_arr,cmap='binary')
    plt.show()

show_single_image(x_train[0])

在这里插入图片描述
展示多张图片

# 显示多张图片
def show_imgs(n_rows,n_cols,x_data,y_data,class_names):
    assert len(x_data) == len(y_data)
    assert n_rows * n_cols < len(x_data)
    plt.figure(figsize = (n_cols * 1.4,n_rows * 1.6))
    for row in range(n_rows):
        for col in range(n_cols):
            index = n_cols*row + col
            plt.subplot(n_rows,n_cols,index+1)
            plt.imshow(x_data[index],cmap="binary",interpolation = 'nearest')
            plt.axis('off')
            plt.title(class_names[y_data[index]])
    plt.show()
    
class_names = ['T-shirt','Trouser','pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']

show_imgs(3,5,x_train,y_train,class_names)

在这里插入图片描述

4. 构建模型

4.1 创建对象

4.1.1 创建对象(方法一)
# tf.keras.models.Sequential()
# 构建模型

# 创建对象
model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28,28]))
model.add(keras.layers.Dense(300,activation='sigmoid'))
model.add(keras.layers.Dense(100,activation='sigmoid'))
model.add(keras.layers.Dense(10,activation='softmax'))
4.1.2 创建对象(方法二)
# 另一种写法
model = keras.modells.Sequential([
    keras.layers.Flatten(input_shape=[28,28]),
    keras.layers.Dense(300,activation='sigmoid'),
    keras.layers.Dense(100,activation='sigmoid'),
    keras.layers.Dense(10,activation='softmax')
])

4.2 编译

# 
model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])

5. 显示模型相关参数

5.1 显示层
model.layers

在这里插入图片描述

5.2 显示概括

# 概况
model.summary()

在这里插入图片描述

扫描二维码关注公众号,回复: 10240686 查看本文章

6. 开始训练

history = model.fit(x_train,y_train,epochs=10,validation_data=(x_valid,y_valid))

7. 结果展示

7.1 显示history

type(history)

7.2 显示history.history

history.history

7.3 画出损失函数和accury

# 画图
def plot_learning_curves(history):
    pd.DataFrame(history.history).plot(figsize=(8,5))
    plt.grid(True)
    plt.gca().set_ylim(0,1)
    plt.show()
plot_learning_curves(history)

在这里插入图片描述

发布了39 篇原创文章 · 获赞 32 · 访问量 5799

猜你喜欢

转载自blog.csdn.net/weixin_39190382/article/details/104083347