如何零基础用tensorflow搭建基本的CNN框架 | 附训练断点续练、图像展示、参数保存模块

这篇博客针对tensorflow初学者,详细解释如何使用keras构建CNN模型,涵盖数据处理、模型构建、训练及断点续训。内容包括CIFAR10数据集的应用,模型结构的解析,以及训练过程和完整代码的分享。
摘要由CSDN通过智能技术生成

如何零基础用tensorflow搭建基本的CNN框架 | 附训练断点续练、图像展示、参数保存模块

在这里插入图片描述
嗨,我是error。

这次的笔记是关于tensorflow基本框架的搭建,零基础带你熟悉如何应用keras搭建自己的CNN模型,并训练自己的数据,实现深度学习。

代码主要参考来源自

【国家精品课程】北京大学人工智能实践-TensorFlow2.0

CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型


Keras的八股文构建方法

这篇文章主要是写给tensorflow零基础但深度学习对CNN结构有一定了解的朋友,故重点会放在详细介绍代码实现CNN结构的方法上面。

首先要了解的是keras最基本的八股文式构建法,即

首先是import各类的库,然后分train和test数据(可以直接使用keras官方的数据也可以使用自己准备的数据,下面会分别讲解)。构建model后compile最后fit就完成了整个训练,最后的summary可有可无,主要是打印网络结构。

下面老师给出了三个主要对象的参数文档说明。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


CNN模型的详细模块解说

首先说明下我的数据来源,来自CIFAR10数据集,照片都放在train文件夹内,在根目录下有trainlabels的csv表格标记着每一张图片的标签
在这里插入图片描述
在这里插入图片描述

根目录下面还有x_train和y_train的npy文件,每次运行代码时都检测是否存在这两个文件,若不存在,则从官网下载CIFAR10文件并保存,若存在则直接调用,不再重复下载。

根目录下的checkpoint文件夹存放着每次训练的参数,以便下次训练时沿用上次已经训练好的参数而不是重复计算,实现了断点续训。

import tensorflow as tf
from PIL import Image
import numpy as np
import os
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_path = './train/'
train_csv = './trainLabels.csv'
x_train_savepath = './x_train.npy'
y_train_savepath = './y_train.npy'

在import完所需要的库后定义需要的路径以便后面传参时方便。

然后我们定义一个generateds的函数来把我们从csv表格标记的每一个图片的标签对应上就好了。

先定义两个空列表,分别是x和y,因为列表是有顺序的,只要我们放入列表的顺序和表格的顺序是一致,那么它们的标签就是对应匹配的。

def generateds(path, csv):
    f = open(csv, 'r')  # 以只读形式打开csv文件
    contents = f.readlines()[1:]  # 读取文件中除了第一行的所有行,因为第一行是id/labels的头
    f.close()  # 关闭csv文件
    x, y_ = [], []  # 建立空列表
    for content in contents:  # 逐行取出
        value = content.split(",")  # 以空格分开,图片路径为value[0] , 标签为value[1] , 存入列表
        img_path = path + value[0] + '.png'  # 拼出图片路径和文件名
        img = Image.open(img_path)  # 读入图片
        img = np.array(img.convert('L'))  # 图片变为8位宽灰度值的np.array格式
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值