Caffe-02-网络配置与solver超参数配置详解(二)

简介: Caffe-02-网络配置与solver超参数配置详解

softmax-loss层


例子如下,下面的例子分别输出的是loss值和似然值

##输出loss值
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  top: "loss"
}
##输出似然值
layer {
  name: "prob"
  type: "Softmax"
  bottom: "cls3_fc"
  top: "prob"
}

reshape层


有时候,我们希望在不改变数据的时候改变输入的维度,所以可以使用reshape进行调整输入数据的参数,例子如下:

layer {
  name: "reshape"
  type: "Reshape"
  top: "data"
  reshape_param { 
  shape: { 
  dim: 0
  dim: 3 
  dim: 32 
  dim: -1 
  } 
}
}
参数解释:在shape中使用参数进行指定输入的数据的大小通道数和批次个数。
dim:0 表示维度不变,和原来相同
dim:3 把原来的维度变成3
dim: -1 表示由系统进行自动计算维度,数据的总量不变。

由上述的例子可以假设输入了10张3通道的64X32的彩色图片),

根据上述的数据设置,批次大小没有改变,然后通道数仍然为32数据的宽为32,高自动计算和原来总量一直,因为原来为64X32,调整宽为32,这里计算后高变为了64。

dropout层


为了防止过拟合,设置dropout层。这里只需要进行配置一个参数dropout_ratio,即可完成dropout的配置,dropout就是随机挑选一些数据进行不使能,模拟神经元遗忘的过程。

layer {
  name: "drop"
  type: "Dropout"
  top: fc1"
  bottom:"fc1"
  dropout_param{
    dropout_ratio: 0.5
  }
}

solver超参数配置详解


因为神经网络的函数往往都是都是非凸的,也就是无法通过数学解析式的方式找到最优解,这时就需要对该网络下的训练参数进行调整设置,已达到更好的训练效果。这里把网络的参数配置文件单独放在了solver.prototxt中,方便对参数进行调整优化。

在例程中给出solver的一个例子,然后对例子进行分析。

# reduce the learning rate after 8 epochs (4000 iters) by a factor of 10
# The train/test net protocol buffer definition
net: "examples/cifar10/cifar10_quick_train_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of MNIST, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 100
# Carry out testing every 500 training iterations.
test_interval: 500
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.0001
momentum: 0.9
weight_decay: 0.004
# The learning rate policy
lr_policy: "fixed"
# Display every 100 iterations
display: 100
# The maximum number of iterations
max_iter: 500
# snapshot intermediate results
snapshot: 500
snapshot_format: HDF5
snapshot_prefix: "examples/cifar10/cifar10_quick"
# solver mode: CPU or GPU
solver_mode: CPU

首先在之前的网络配置文件中,我们配置好了各层的网络的结构,所以这里要首先进行指定网络模型文件:

##网络模型的描述文件
#也可以进行训练和测试分别指定
#train_net="xxxxxxxxxxx"
#test_net ="xxxxxxxxxxx"
net: "examples/cifar10/cifar10_quick_train_test.prototxt"

然后定义测试的间隔和训练次数,训练次数这个参数要和test_layer结合考虑,如果在test_layer的每批次的大小是100而总共的测试数据为10000张,那么参数为10000/100=100。

test_iter: 100
#每训练500次进行一次测试
test_interval: 500

接着定义学习率、动力、权重值的衰减率等参数。

#学习率
base_lr: 0.0001
#动力 
momentum: 0.9

对于优化算法的选择可以忽略,默认为SGD,不同的优化算法差别不是很大。

#在caffe中一共有6种优化算法可以选择

  1. Stochastic Gradient Descent (type: SGD)
  2. AdaDelta (type: AdaDelta)
  3. Adaptive Gradient (type: AdaGrad)
  4. Adam (type: Adam)
  5. Nesterov’s Accelerated Gradient (type: Nesterov)
  6. RMSprop (type: RMSPorp)

权重衰减项,就是正则化项,作用是防止过度拟合。

weight_decay: 0.004

学习率的调整策略:

  • fixed :保持base_lr不变
  • step :如果设置为step,则需要设置一个strpsize,返回值为:base_lr X gamma ^(floor (iter / stepsize)) ,iter 为迭代次数。
  • exp : 返回值为base_lr X gamma ^i ter ,iter 为迭代次数。
  • inv :如果设置为了inv则还需要设置power和gamma项,返回值为base_lr * (1 + gamma * iter ) ^ (- power ),iter 为迭代次数。
  • multistep : 如果设置multistep ,还需要设置stepvalue,这个参数和step相似,step是均匀等间隔变化,而multistep 是根据stepvalue值变化。
  • poly :学习率进行多项式误差。返回:base_lr ( 1 - iter / max_iter )^ (power ) ,iter 为迭代次数。
  • sigmoid : 学习率进行sigmoid 衰减,返回:base_lr (1 / ( 1 + exp ( -gamma X(iter - stepsize))))

每训练100次进行一次屏幕显示,设置为0则不显示。

display: 100

最大迭代次数:

max_iter: 500

#快照,在训练每100次的时候保存一次,如果设置0则为不保存。

snapshot: 100
snapshot_format: HDF5
snapshot_prefix: "examples/cifar10/cifar10_quick"

#选择运行模式

solver_mode: CPU
目录
相关文章
|
21天前
|
安全 网络安全 数据安全/隐私保护
|
10天前
|
网络协议 Linux
图形界面配置网络
本文介绍了在Linux上配置网络服务的步骤。首先打开RHEL-01服务器,找到桌面网络配置选项,进入网络配置面板。点击面板右下角的小齿轮,进入有线配置面板,选择IPv4选项,将地址设置为手动。接下来配置IP地址、子网掩码、网关和DNS服务器。配置完成后,使用新的IP地址进行访问。
23 4
图形界面配置网络
|
9天前
|
网络虚拟化 数据安全/隐私保护 数据中心
对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令
本文对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令,帮助网络工程师更好地理解和使用这两个品牌的产品。通过详细对比,展示了两者的相似之处和差异,强调了持续学习的重要性。
22 2
|
10天前
|
网络协议 Linux
通用网卡配置文件配置网络
本文介绍了在RHEL 7系统中配置网络的方法。首先,通过编辑位于`/etc/sysconfig/network-scripts`目录下的网卡配置文件(例如`ifcfg-ens33`),设置静态IP地址、子网掩码、网关和DNS等参数。接着,使用`systemctl`命令重启网络服务,确保配置生效。此外,还介绍了使用`nmtui`图形界面工具进行网络配置的步骤,包括修改IP地址、保存配置和重启网络。最后,通过`ip addr`或`ifconfig`命令验证配置是否成功。
35 2
|
1月前
|
网络协议 安全 网络安全
Cisco-网络端口地址转换NAPT配置
Cisco-网络端口地址转换NAPT配置
|
27天前
|
存储 缓存 Ubuntu
配置网络接口的“IP”命令10个
【10月更文挑战第18天】配置网络接口的“IP”命令10个
50 0
|
2月前
|
运维 监控 安全
网络管理:防火墙和安全组配置详解
网络管理:防火墙和安全组配置详解
77 1
|
2月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
249 3
|
2月前
|
Ubuntu
树莓派 —— ubuntu上通过netplan配置网络
树莓派 —— ubuntu上通过netplan配置网络
|
3月前
|
网络协议 Ubuntu Linux
在Linux中,如何配置网络?
在Linux中,如何配置网络?