VGG16模型详解 and 代码搭建

该博客介绍了如何使用TensorFlow构建VGG16网络模型,详细展示了从数据预处理、模型搭建到训练的完整过程。VGG16以3x3卷积滤波器和池化层为特点,减少了Alexnet中可能忽略的特征。同时,提供了数据集的制作方法,包括读取、转换和保存为pkl文件。代码已上传至GitHub供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一. VGG 网络模型

二. 代码复现

1. 网络搭建

2.数据集制作(pkl)

3.源码地址


一. VGG 网络模型

         Alexnet是卷积神经网络的开山之作,但是由于卷积核太大,移动步长大,无填充,所以14年提出的VGG网络解决了这一问题。而且VGG网络结构简单,以 基础卷积和池化组成,非常适合用作CNN的入门学习。 通过卷积,池化 不断将图片 的尺寸减小, 维度升高, 提取特征。
        VGG的主要贡献是全面评估网络的深度,使用3*3卷积滤波器来提取特征。解决了Alexnet容易忽略小部分的特征。目前常用的有VGG13\VGG16网络,本文实例部分以VGG16为例。VGG模型如下:

        如图所示,一共列出了VGG11、VGG13、VGG16、VGG19等6种VGG模型, 以VGG16为例, 因为其具有16个网络层,主要注意的是这其中不包括pooling(池化层)如maxpool,avgpool等,本文以上图中的VGG16(第D列)为例进行讲解。

二. 代码复现

1. 网络搭建

        以上图中的(D列)VGG16为例, 构建模型, train.py训练代码如下,其中模型搭建如network = Sequential所示。

import tensorflow as tf
import numpy as np
import os
import cv2
from tensorflow.keras import layers, optimizers, datasets, Sequential
import sys
from six.moves import cPickle

# 调用 GPU
gpu = tf.config.experimental.list_physical_devices('GPU')
if len(gpu) > 0:
    tf.config.experimental.set_memory_growth(gpu[0], True)

def main():

    ######第一步,train, test # 加载数据
    #  batchsize 指每次 用作训练样本数, 比如训练样本总数为10000, 其中 训练集 8000张  验证集2000
    #  Train_batchsize = 80 ,则说明将所有数据训练一轮需要 8000/80 = 100 步 (step = 100) 也称一轮训练迭代100次
    #  训练时 还有一个参数 epoch, 表示整个训练 需要轮几次, 如epoch = 100 , 则表示 需要将整个 数据集训练100轮
    #  则整个训练 需要 迭代 epoch * (8000/Train_batchsize) = 10000 次
    Train_batchsize = 80
    val_batchsize = 50
    
    # 加载 训练集 和 验证集, 
    # x -> 训练用图片数据  x_val -> 验证用图片数据  
    # y -> 训练用图片标签  y_val ->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值