caffe各层参数详解

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: caffe各层参数详解

 在prototxt文件中,层都是用layer{}的结构表示,而里面包含的层的参数可以在caffe.proto文件中找到,比如说Data类型的结构由message DataParameter所定义,Convolution类型的结构由message ConvolutionParameter所定义。

具体说明下:

    • name表示该层的名称
    • type表示该层的类型,如Data或者Convolution类型
    • top表示该层后接的Blob结构的名称
    • bottom表示该层前接的Blob数据结构的名称
    • *_param表示该层的参数,比如对于某卷积层conv1来说,convolution_param
      • num_output表示输出通道数
      • pad表示卷积pad
      • kernel_size表示卷积核的大小

        这里我推荐一个资源:caffe网络模型各个层详解

        https://download.csdn.net/download/pbymw8iwm/10706680

        数据层

        {
          name: "data"
          type: "Data"
          top: "data"
          top: "label"
          transparam {
            scale: 0.003920625        // 归一化:1/256
          }
          include {
            phase: TRAIN/TEST         // 训练阶段
          }
          data_param {
            source: "examples/mnist/train_lmdb"
            batch_size: 64           // 批量处理数
            backend: LMDB            // 数据格式,LMDB/HDF5等
          }
        }

        image.gif

        卷积层

        卷积层是CNN网络的核心,一般用来提取图像特征。

        layer {
          name: "conv"
          type: "Convolution"
          bottom: "data"
          top: "conv"
          param {
            lr_mult: 1             // weight的学习率
            decay_mult: 1          // 权重衰减
          }
          param {
            lr_mult: 2            // bias的学习率
            decay_mult: 0
          }
          convolution_param {
            num_output: 20        // 通道数
            kernel_size: 5        // 卷积核大小
            stride: 1             // 步长
            weight_filter {       // 权重初始化,xavier/guassion/constant
              type: "xavier"      // 一种均匀化分布
            }
            bias_filter {         // 偏置初始化
              type: "constant"    // 值全为0
            }
          }
        }

        image.gif

        Pool层

        池化层,用来减小训练参数规模。

        layer {
          name: "pool"
          type: "Pooling"
          bottom: "conv"
          top: "pool"
          pooling_param {
            pool: MAX             // 最大化,还有均值化/最小化
            kernel_size: 2        // 卷积核大小,缩放效果
            stride: 2             // 步长
          }
        }

        image.gif

        全连接层

        类似卷积层

        layer {
          name: "ip"
          type: "InnerProduct"
          bottom: "pool"
          top: "ip"
          param {
            lr_mult: 1
          }
          param {
            lr_mult: 2
          }
          inner_product_param {
            num_output: 10
            weight_filter {
              type: "xavier"
            }
            bias_filter {
              type: "constant"
            }
          }
        }

        image.gif

        Relu层

        激活函数

        layer {
          name: "relu"
          type: "Relu"
          bottom: "ip"
          top: "ip"
        }

        image.gif

        Accuracy层

        一般在测试阶段看到训练精度。

        layer {
          name: "accuracy"
          type: "Accuracy"
          bottom: "ip"
          bottom: "label"
          top: "accuracy"
          include {
            phase: TEST
          }
        }

        image.gif

        Softmax层

        损失函数,常用于多个分类

        layer {
          name: "loss"
          type: "SoftmaxWithLoss"
          bottom: "ip"
          bottom: "label"
          top: "loss"
        }

        image.gif

        BatchNormal层

        批量正则化,不依赖于初始值,加快训练速度。

        layer {
          name: "batchnorm"
          type: "BatchNorm"
          bottom: "conv"
          top: "conv"
          batch_norm_param {
            use_global_stats: true
          }
          include {
            phase: TRAIN/TEST
          }
        }

        image.gif

        Scale层

        BN层后面一般都要带Scale层,和batchnorm计算公式中的参数有关。

        layer {
          name: "scale"
          type: "Scale"
          bottom: "conv"
          top: "conv"
          scale_param {
            bias_term: true
          }
        }

        image.gif

        Dropout层

        Dropout是一个防止过拟合的trick。可以随机让网络某些隐含层节点的权重不工作。

        layer {
          name: "drop7"
          type: "Dropout"
          bottom: "fc7-conv"
          top: "fc7-conv"
          dropout_param {
            dropout_ratio: 0.5
          }
        }

        image.gif


        相关文章
        |
        缓存 网络协议 Ubuntu
        Linux基础命令---nfsstat显示nfs状态
        nfsstat nfsstat指令用来显示nfs客户端和服务器的活动信息。 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。 1、语法 nfsstat [选项] 2、参数列表 -s | --server 只显示服务器信息,默...
        7448 0
        |
        10月前
        |
        数据可视化 Linux iOS开发
        Python脚本转EXE文件实战指南:从原理到操作全解析
        本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
        2188 2
        |
        10月前
        |
        开发工具 Android开发 开发者
        用Flet打造跨平台文本编辑器:从零到一的Python实战指南
        本文介绍如何使用Flet框架开发一个跨平台、自动保存的文本编辑器,代码不足200行,兼具现代化UI与高效开发体验。
        1342 0
        |
        存储 Python
        Python 实现单向链表,和单向链表的反转
        链表是一种数据结构,每个节点存储相邻节点的位置信息。单链表中的节点仅存储下一节点的位置。通过Python实现单链表,定义`ListNode`类并关联节点可创建链表。例如,创建A->B->C的链表后,可通过反转函数`reverse`将链表反转为CBA。代码展示了如何实现和操作单链表。
        378 6
        Python 实现单向链表,和单向链表的反转
        |
        机器学习/深度学习 存储 自然语言处理
        深度学习之模型剪枝
        模型剪枝(Model Pruning)是深度学习中一种减少模型复杂度、提高计算效率的方法。通过删除冗余的神经元或连接,剪枝能够在不显著影响模型性能的前提下,减少模型参数数量、降低计算和存储需求。
        1049 3
        |
        人工智能 JSON API
        使用 Qwen 生成数据模型和进行结构化输出
        本教程展示如何使用CAMEL框架和Qwen模型生成结构化数据。CAMEL是一个强大的多智能体框架,支持复杂的AI任务;Qwen由阿里云开发,具备自然语言处理等先进能力。教程涵盖安装、API密钥设置、定义Pydantic模型,并演示了通过Qwen生成JSON格式的学生信息。最后,介绍了如何利用Qwen生成多个随机学生信息的JSON格式数据。欢迎在[CAMEL GitHub](https://github.com/camel-ai/camel)上为项目点星支持。
        4405 70
        |
        机器学习/深度学习 人工智能 算法
        探索机器学习中的过拟合现象及其解决方案
        在机器学习领域,过拟合是一个常见且棘手的问题,它发生在模型过于复杂以至于捕捉到训练数据中的噪声而非信号时。本文将深入探讨过拟合的原因、影响以及如何通过技术手段有效缓解这一问题,旨在为读者提供一个全面而实用的指南。
        |
        机器学习/深度学习 算法 决策智能
        【机器学习】揭秘深度学习优化算法:加速训练与提升性能
        【机器学习】揭秘深度学习优化算法:加速训练与提升性能
        |
        机器学习/深度学习
        【机器学习】准确率、精确率、召回率、误报率、漏报率概念及公式
        机器学习评估指标中的准确率、精确率、召回率、误报率和漏报率等概念,并给出了这些指标的计算公式。
        5093 0
        |
        存储 Shell Linux
        【Shell 命令集合 磁盘管理 】Linux 取消挂载 umount命令使用教程
        【Shell 命令集合 磁盘管理 】Linux 取消挂载 umount命令使用教程
        1577 1