深度学习编程笔记:Tensorflow2.1基础知识---神经网络八股功能扩展

本文深入探讨了在TensorFlow2.1中增强神经网络的六个关键点:自定义训练集加载、数据增强、断点续训、参数提取、损失与准确率可视化以及前向传播应用。通过实例代码详细介绍了如何实现这些功能,为深度学习项目提供了实用指导。
摘要由CSDN通过智能技术生成

本篇文章的主要目的是对上一篇文章已经搭建好的网络进一步丰富其内容,具体体现在6个方面:

回顾:tf.keras搭建神经网络八股——六步法

  1. import——导入所需的各种库和包
  2. x_train, y_train——导入数据集、自制数据集、数据增强
  3. model=tf.keras.models.Sequential
    /class MyModel(Model) model=MyModel——定义模型
  4. model.compile——配置模型
  5. model.fit——训练模型、断点续训
  6. model.summary——参数提取、acc/loss 可视化、前向推理实现应用

1.加载自己制作的训练集

代码:

import tensorflow as tf
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')  # 以只读形式打开txt文件
    contents = f.readlines()  # 读取文件中所有行
    f.close()  # 关闭txt文件
    x, y_ = [], []  # 建立空列表
    for content in contents:  # 逐行取出
        # 因为数据是2028_7.jpg 7,中间会有一个空格,下面这句话就是把图片x和结果y分开
        value = content.split()  # 以空格分开,图片路径为value[0] , 标签为value[1] , 存入列表,以空格为分隔符,包含 \n
        img_path = path + value[0]  # 拼出图片路径和文件名
        # 字符串的加法path + value[0]就是./mnist_image_label/mnist_test_jpg_10000/+2028_7.jpg,
        # img_path就是'./mnist_image_label/mnist_test_jpg_10000/2028_7.jpg'
        img = Image.open(img_path)  # 读入图片
        #  模式“L”
        #  为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
        # 在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换的:
        img = np.array(img.convert('L'))  # 图片变为8位宽灰度值的np.array格式
        img = img / 255.  # 数据归一化 (实现预处理)
        x.append(img)  # 归一化后的数据,贴到列表x

        y_.append(value[1])  # 标签贴到列表y_
        print('loading : ' + content)  # 打印状态提示

    x = np.array(x)  # 变为np.array格式
    y_ = np.array(y_)  # 变为np.array格式
    y_ = y_.astype(np.int64)  # 变为64位整型
    return x, y_  # 返回输入特征x,返回标签y_

# os.path.exists()函数用来检验给出的路径是否真地存在
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):
    print('-------------Load Datasets-----------------')
    x_train_save = np.load(x_train_savepath)
    y_train = np.load(y_train_savepath)
    x_test_save = np.load(x_test_savepath)
    y_test = np.load(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-----------------')
    x_train, y_train = generateds(train_path, train_txt)
    x_test, y_test = generateds(test_path, test_txt)

    print('-------------Save Datasets-----------------')
    # 这里x是一个列表,一个元素包含的是一张图片28*28个,
    # 这里的len(x_train),应该就是60000,-1代表把x_train中的形状转换成行为60000的形状
    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)

model = tf.keras.models.Sequential
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值