Liux常用命令和caffe 常用命令

来源:互联网 发布:集装箱号计算算法 编辑:程序博客网 时间:2024/06/08 13:51

Linux部分:

 配置 cuda 环境变量  export LD_LIBRARY_PATH=/usr/local/cuda/lib64:./build/lib:$LD_LIBRARY_PATH
查看当前环境变量:
echo $PATH
设置: 
方法一:export PATH=PATH:/XXX 但是登出后就失效
方法二:修改~/.bashrc或~/.bash_profile或系统级别的/etc/profile
        1. 在其中添加例如export PATH=/opt/ActivePython-2.7/bin:$PATH  (cuda:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:./build/lib:$LD_LIBRARY_PATH)
        2. source .bashrc  (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)


1\ 重新编译  make clean  然后make , language——identify_real_data 重新重新编译即可
  重新编译完 不需要配置cuda 环境变量,直接能够利用caffe
------------------------------------------------------------------------------------------
文件拷贝:
cp -Rf /home/user1/* /root/temp/
将 /home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。
即格式为:cp -Rf 原路径/ 目的路径/
选择性满足条件拷贝请参考:http://www.jb51.net/LINUXjishu/65722.html
-----------------------------------------------------------------------------------------
2、 vnc 使用
关掉一个vnc  vncserver  -kill :4   kill :4之间有个空格


启动vnc      vncserver :4


启动的时候同时调整vnc的 分辨率          vncserver -geometry 1280x1024


调整分辨率 需要先把原来的vnc kill 调,然后重新启动时候 调整 


注意,远程桌面只能看到终端的话,可能是在配置文件里把界面关了。如果不注意把终端关掉的话,可以kill
掉这个窗口,然后重新打开一个vnc 即可。
远程桌面只能看到终端,设置桌面方式。修改完毕后须重新启动 VNCServer
VNCServer 的X 桌面默认为 twm, 这时连接进去只能看到终端界面,而看不到远程桌面界面。可修改 /root/.vnc/xstartup 文件,将其改为 GNOME 或 KDE 桌面:
GNOME:
[root @ test vnc-4_1_2-x86_linux] # vi /root/.vnc/xstartup
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot –solid grey
vncconfig –iconic &
xterm –geometry 80x24+10+10 –ls –title “$VNCDESKTOP Desktop” &
gnome-session &
设置完之后,重新登录vnc出现,如下三行。
Accept clipboard from viewers
Send clipboard to viewers
Send primary selection to viewers的页面,所以还是必须要去掉这两行前面的#才能正常进入桌面
----------------------------------------------------------------------------------------
3 把 cuda 加入环境变量
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:./build/lib:$LD_LIBRARY_PATH
http://blog.csdn.net/vbskj/article/details/17463735 参考博客,cuda 配置
----------------------------------------------------------------------------------------
4、 显卡使用情况
请用nvidia-smi命令查看GPU的使用情况。
尽量用闲置的GPU。
-----------------------------------------------------------------------------------------
5\ 查看cpu使用情况
  输入 top
  可以查看当前哪些用户,再用,分别占用cpu 多少, 是哪些命令占用比较多 
今天启动一个高负载的进程。我用top命令监控系统。发现cpu的占用比例常常显示120%以上。


我的机器是24cpu的。
经过在网上搜索,发现top命令显示的是占用的cpu总数。
即8cpu时top下cpu利用率最大可以到达800%。
如果你的进程利用了多个cpu,那么top命令显示的是多个cpu占用率的总和。
所以top命令下查看到的cpu利用率是可能超过100%的。
------------------------------------------------------------------------------------------
6\ cat /proc/meminfo
内存使用率 查看 /proc/meminfo查看内存详细信息,也可以通过free 命令查看
--------------------------------------------------------------------------------------------------
6\ cat /proc/net/dev
网络利用率 通过查看文件/proc/net/dev 可以了解,centos系统的网络使用情况跟windows的网络情况类似
--------------------------------------------------------------------------------------------------
8/ Linux限制某些进程cpu占用率
使用apt-get更方便的安装
$ sudo apt-get  update
$ sudo apt-get install cpulimit
或手动安装如下
# cd  /tmp
# wget  'http://downloads.sourceforge.net/cpulimit/cpulimit-1.1.tar.gz'
# tar  cpulimit-1.1.tar.gz
# cd cpulimit-1.1
# make
# cp cpulimit  /usr/local/sbin/
# rm -rf cpulimit*


如何使用cpulimit?
限制firefox使用30% cpu利用率
# cpulimit -e firefox -l 30
限制进程号1313的程序使用30% cpu利用率
# cpulimit -p 1313 -l 30
根据进程名找出pid的方法
# ps aux | less
# ps aux | grep firefox
# pgrep -u vivek php-cgi
# pgrep lighttpd
可以使用绝对路径限制进程的cpu利用率
# cpulimit -P /opt/firefox/firebox -l 30
单核cpu和多核cpu
单核cpu的使用率范围为0%-100%,四核cpu的使用率范围为0%-400%.


相关工具
nice:以指定的优先级运行程序
renice:  调整以运行进程的优先级
适当调整其nice值: renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'
------------------------------------------------------------------------------------------------
查看谁访问服务器设置。


w 或者 who 查看登录的用户;


-------------------------------------------------------------------------
tee
在执行Linux命令时,我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令
要注意的是:在使用管道线时,前一个命令的标准错误输出不会被tee读取。
另:把标准错误也被tee读取
ls  2>&1 | tee ls.txt   该文件夹内会自动保存ls 出来的内容到 ls.txt 中,
./build/tools/caffe train --solver=./workgooglenet-32-64/config/model-googlenet-solver.prototxt 2>&1 | tee workgooglenet-32-64/info.txt
caffe 中的使用实例。
----------------------------------------------------------------------------------------------------------
grep  'old' ls.txt ,查找ls.txt中是否有old 字符串


---------------------------------------------------------------------------------
putty 关掉后, 程序继续跑。


新建一个窗口 该干嘛干嘛
screen -S copy
cp -r xx xx
然后ctrl + a + d 脱离 上面的会在后台运行
几个小时后
screen -r
或者
screen -r copy




--------安装常用的命令-----------------------------------------------------------
   apt-cache search # ——(package 搜索包)       ---------------------  搜索所有的软件包,可以方便找到最新版本
  apt-cache show #——(package 获取包的相关信息,如说明、大小、版本等)
  sudo apt-get  install # ——(package 安装包)----------------------------------- 根据查到的版本,可以
  sudo apt-get install # —–(package - - reinstall 重新安装包)
  sudo apt-get -f install # —–(强制安装?#”-f = –fix-missing”当是修复安装吧…)
  sudo apt-get remove #—–(package 删除包)
---------------------------------------------------------------


从本服务器上访问另一个服务器  ssh zhangmeng@10.167.174.123   然后输入密码即可。
拷贝远程服务器192.168.1.112的目录/tmp/test到当前目录下。
[root@CentOS_Test_Server tmp]# scp -r root@192.168.1.112:/tmp/test ./






caffe部分



-------------加入环境变量,如果用户没加入到自己的环境变量,可以在这里设置--------------------
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:./build/lib:$LD_LIBRARY_PATH


1、----------------训练模型---------------------------------------------------------
# train a model
./build/tools/caffe train --solver=./work/config/solver.prototxt 2>&1 | tee work/info.txt


使用所有gpu 

#!/usr/bin/env sh


./build/tools/caffe train --solver=work/LeNet/lenet_solver.prototxt   -gpu all  2>&1 | tee work/info.txt


2、----------------利用已有的模型,继续训练模型---------------------------------------------------------
# retrain a model
./build/tools/caffe train --solver=./work/config/solver.prototxt 2>&1 | tee work/info.txt


./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --snapshot=models/bvlc_reference_caffenet/caffenet_train_iter_10000.solverstate


3、----------------利用已有的模型,在自己的数据上继续训练模型---------------------------------------------
# retrain a model
caffe % ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0


参考官网:http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html
http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/03-fine-tuning.ipynb 写Python脚本,分别测试两个网络,画出损失函数,得到对比结果


4、-----------------测试模型------------------------------------------------------------------------------------
# test a model
#./build/tools/caffe test --gpu 1 --iterations 5 --model ./work/config/model.prototxt --weights ./work/model/m__iter_3000.caffemodel


5、-----------------输入图像,利用训练好的模型,预测结果。---------------------------------------------
# test a model
#./build/tools/caffe test --gpu 1 --iterations 5 --model ./work/config/model.prototxt --weights ./work/model/m__iter_3000.caffemodel
/build/examples/cpp_classification/classification.bin \
 models/bvlc_reference_caffenet/deploy.prototxt \ 
models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \ 
data/ilsvrc12/imagenet_mean.binaryproto \ 
data/ilsvrc12/synset_words.txt \ 
examples/images/cat.jpg 


The output should look like this:
 ---------- Prediction for examples/images/cat.jpg ---------- 0.3134 - "n02123045 tabby, tabby cat" 0.2380 - "n02123159 tiger cat" 0.1235 - "n02124075 Egyptian cat" 0.1003 - "n02119022 red fox, Vulpes vulpes" 0.0715 - "n02127052 lynx, catamount"


data/ilsvrc12/imagenet_mean.binaryproto  不需要这个的时候,改写examples/cpp_classification/classification.cpp 程序,把里面的该项去掉。重新编译即可。


6、-----------------获取 benchmark time------------------------------------------------------------
# get time benchmark
#./build/tools/caffe time --gpu=0 --model=work/config/model.prototxt 2>&1 | tee work/info.txt


7、-----------------提取特征------------------------------------------------------------
./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 lmdb


参考官网:http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html


8、------------------------由配置文件画网络结构图----------------


# sudo python python/draw_net.py examples/mnist/lenet_train_test.prototxt lenet.png --rankdir=BT


draw_net.py执行的时候带三个参数


第一个参数:网络模型的prototxt文件


第二个参数:保存的图片路径及名字


第二个参数:--rankdir=x , x 有四种选项,分别是LR, RL, TB, BT 。用来表示网络的方向,分别是从左到右,从右到左,从上到小,从下到上。默认为LR。
example2:
./python/draw_net.py \
    ./examples/siamese/mnist_siamese.prototxt \
    ./examples/siamese/mnist_siamese.png  --rankdir=BT
 sudo python python/draw_net.py workGooglenet/config/googlenet_model.prototxt googlenet_model.png --rankdir=BT
 sudo python python/draw_net.py workgooglenet-32-64/config/googlenet_model.prototxt workgooglenet-32-64.png --rankdir=BT
python python/draw_net.py models/bvlc_googlenet/train_val.prototxt googlenet1.png --rankdir=BT
9、----------------------画损失函数和准确率图------------------------------------------------------
cd caffe-master/python  运行 Python plot-loss.py ,
这里是根据配置文件,重新训练一次,然后把迭代过程的值保留下来,最后画出来;
plot-loss.py 中,
solver = caffe.SGDSolver('examples/cifar10/cifar10_quick_solver.prototxt')
如果不需要绘制曲线,只需要训练出一个caffemodel, 直接调用solver.solve()就可以了。如果要绘制曲线,就需要把迭代过程中的值保存下来,因此不能直接调用solver.solve(), 需要迭代。在迭代过程中,每迭代200次测试一次
niter =4000  迭代的次数
test_interval = 200   每迭代200次测试一次


-----------------------------------------------------------------------------------------------------

0 0