新手运行caffe项目

教程详细介绍了如何在Ubuntu18.04环境下,利用Docker容器和Caffe的CPU版本进行MNIST数据集的神经网络模型训练。步骤包括创建容器、获取数据、构建prototxt文件、制定solver.prototxt、训练模型以及日志的可视化分析。
摘要由CSDN通过智能技术生成

教程:(57条消息) ubuntu18.04编译使用 caffe cpu 使用工具示例 训练示例_Hero_HL的博客-CSDN博客

【进入容器内】

sudo docker run -it --name my_caffe_container bvlc/caffe:cpu /bin/bash

-run:运行新进程
-it:交互式,与容器交互
--name my_caffe_container:指定容器名称
bvlc/caffe:cpu: 要运行的 Docker 镜像的名称及其标签


【进入caffe运行.sh来get获得data测试目录】

apt-get install wget
cd /opt/caffe/data/mnist
./get_mnist.sh

【查看.sh脚本】

cat create_mnist.sh

mnist引用的案例/数据/生成的文件location

**测试目录data    .sh生成了data

root@d7150bf06816:/opt/caffe# ./examples/mnist/create_mnist.sh

**测试数据examples      .sh生成了examples:

mnist_train_lmdb和mnist_test_lmdb

【生成图形界面】

apt-get install graphviz
pip install pydot

【新建目录+文件】

root@d7150bf06816:/opt/caffe# mkdir mytrain
nano hbk_mnist.prototxt
name: "hbk_mnist"

# train/test lmdb数据层
layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "/opt/caffe/examples/mnist/mnist_train_lmdb"
    batch_size: 64
    backend: LMDB
  }
}
layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "/opt/caffe/examples/mnist/mnist_test_lmdb"
    batch_size: 100
    backend: LMDB
  }
}

# 全连接层,激活层为ReLU   784->500->10
layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "data"
  top: "ip1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}

layer {
  name: "relu1"
  type: "ReLU"
  bottom: "ip1"
  top: "re1"
}
layer {
  name: "ip2"
  type: "InnerProduct"
  bottom: "re1"
  top: "ip2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 10
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}

# 测试验证用,不必须,输出准确率
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "ip2"
  bottom: "label"
  top: "accuracy"
  include {
    phase: TEST
  }
}

# 代价Cost层
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  top: "loss"
}

一个train文件,一个test文件路径(测试的数据)

【在mytrain绘制神经网络结构图】

root@d7150bf06816:/opt/caffe/mytrain# python ../python/draw_net.py hbk_mnist.prototxt aa.png --rankdir=BT
python ../python/draw_net.py hbk_mnist.prototxt aa.png --rankdir=LR

B-竖

L-横

【评估mytrain模型prototxt执行时间】

caffe time -model hbk_mnist.prototxt -iterations 100

迭代次数 -iterations 100

【mytrain新建一个solver.prototxt文件】

# The train/test net 文件路径
net: "hbk_mnist.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

# 训练迭代多少次执行一次Test验证
test_interval: 500


# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005

# The learning rate policy
lr_policy: "inv"
gamma: 0.0001
power: 0.75

# 多少次迭代输出一次信息
display: 100
# The maximum number of iterations
max_iter: 10001
# 存储中间结果
snapshot: 5000
snapshot_prefix: "snapshot"

# solver mode: CPU or GPU
solver_mode: CPU

【用caffe执行模型训练】

caffe train -solver hbk_mnist_solver.prototxt

-solver hbk_mnist_solver.prototxt: 是一个命令行参数,用于指定求解器配置文件的路径。hbk_mnist_solver.prototxt:是一个包含训练参数和配置的文件,它描述了模型训练的设置,如优化算法、学习率、迭代次数等。

【输出结果重定向到b.log (2标准输出也视作1错误输出)】

caffe train -solver hbk_mnist_solver.prototxt >./b.log 2>&1
caffe train -solver hbk_mnist_solver.prototxt 2>&1 | tee a.log

在 Caffe 中训练一个神经网络模型,并将训练过程中的输出保存到日志文件

  • 2>&1: 这部分与前面的命令相同,表示将标准错误输出重定向到标准输出的位置。
  • | tee a.log: 这部分使用管道符标准输出传递给 tee 命令。tee 命令会同时显示输出内容在终端上,并将输出内容保存到名为 a.log 的日志文件中。

【日志打成图】

apt install python-tk
apt install tk-dev
apt-get install bsdmainutils  (安装column命令,caffe脚本中需要用到column命令)

caffe/tools/extra/plot_training_log.py.example加上:

import matplotlib
matplotlib.use('Agg')

Matplotlib 的后端为agg:图表的无界面绘制

【在mytrain通过python绘图】

python ../tools/extra/plot_training_log.py.example 6 plotlog.png a.log
python …/tools/extra/plot_training_log.py.example 0 plotlog_accuracy_vs_iters.png a.log

【挂载方式拷贝到我的主机】

docker cp d7150bf06816:/opt/caffe/mytrain/plotlog_accuracy_vs_iters.png /home/lin/guazai/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值