如何caffe 绘制loss曲线caffe训练过程中的loss和accurary的曲线

&a href=&///?target=https%3A///happynear/caffe-windows/tree/ms/windows/caffe.binding& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&caffe-windows/windows/caffe.binding at ms · happynear/caffe-windows · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&代码就这点,要用的话,还是要费点功夫迁移到你自己的工程中。&br&&br&这个分支前两天我手贱给升级到VS 2015+CUDA 8.0了,还在用VS 2013的只能自己动手了。&br&&br&我这个方案的好处是写自己的程序时不需要带上caffe的header,编译速度会快很多。
代码就这点,要用的话,还是要费点功夫迁移到你自己的工程中。 这个分支前两天我手贱给升级到VS 2015+CUDA 8.0了,还在用VS 2013的只能自己动手了。 我这个方案的好处是写…
作为一个做过两年Async VLSI design的人,支持一下TrueNorth。TrueNorth最早的概念来自于Cornell的Rajit Manohar在ASYNC 12的一篇Best Paper (&a href=&///?target=http%3A//vlsi.cornell.edu/%7Erajit/ps/gg2.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&vlsi.cornell.edu/~rajit&/span&&span class=&invisible&&/ps/gg2.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)。这个chip属于quasi-delay insensitive (QDI),了解一点async的人都知道QDI的优点就是去掉了sync design的clk margin,因为是dual rail channel, 每个cell都有output completion sensing circuit,可以做到self-timed,非常的robust。缺点么,也非常明显,power-hungry。后来Rajit拿到了IBM的funding,就做成现在的True-North(懂VLSI可以看看他们在TCAD上发的paper - &a href=&///?target=http%3A//ieeexplore.ieee.org/xpl/articleDetails.jsp%3Farnumber%3D7229264& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IEEE Xplore Abstract&i class=&icon-external&&&/i&&/a&),每个core是QDI的,然后network-on-chip (NOC)是基于bundled data channel的2D mesh network。QDI因为是dual rail的,也就是N-bit data需要2^N wires, 但是一个core不可能设计那么多的pin,所以就把dual rail channel变成了bundled-data channel (bundled-data也是async design的一种template,一个channel有data wire, request 和 acknowledge,N-bit data只需要N+2 wires)。上个月跟Rajit聊,他说他们组还在继续做TrueNorth,而且他们也在跟Stanford一个叫Brain-in-Silicon的group合作,试图做一些新的deep neural network的architecture。
作为一个做过两年Async VLSI design的人,支持一下TrueNorth。TrueNorth最早的概念来自于Cornell的Rajit Manohar在ASYNC 12的一篇Best Paper ()。这个chip属于quasi-delay insensitive (QDI),了解一点async的人都知道QDI的优点就是…
有幸先后和几个不同框架的作者交流过,其实他们都知道不同框架都有其各自的优缺点,互相取长补短而已。就像purine的computational flow的思想caffe2有所借鉴,purine的作者更是直接加入了Mxnet,把相关的feature都集成进了mxnet。&br&性能和易用性永远都存在一个tradeoff,能够流行起来的框架肯定是都有其出众之处,不然用户早就用脚投票了。&br&另外虽然google是一门心思tensorflow了,但大公司用caffe的很多,创业公司就更多了,这里就不一一列举了,以题主最近对DL的狂热兴趣,相信都是可以查到的~~
有幸先后和几个不同框架的作者交流过,其实他们都知道不同框架都有其各自的优缺点,互相取长补短而已。就像purine的computational flow的思想caffe2有所借鉴,purine的作者更是直接加入了Mxnet,把相关的feature都集成进了mxnet。 性能和易用性永远都存在一…
这里默认你说的gpu加速是指NVIDIA的cuda加速&br&CPU是中央处理单元,gpu是图形处理单元&br&简单的说,gpu由上千个流处理器(core)作为运算器。执行采用单指令多线程(SIMT)模式。&br&在cuda编程中有grids、blocks、threads三个维度,大量threads组成一个block,大量blocks组成一个grid。每个block内的所有threads执行相同的操作。&br&在gpu上执行的函数叫kernel函数,用__device__或__global__声明&br&下面是一个典型的kernel函数的例子,实现向量加法&br&&div class=&highlight&&&pre&&code class=&language-c&&&span class=&kt&&void&/span& &span class=&n&&__global__&/span& &span class=&nf&&vectorADD_gpu&/span&&span class=&p&&(&/span&&span class=&kt&&double&/span& &span class=&o&&*&/span&&span class=&n&&A&/span&&span class=&p&&,&/span&
&span class=&kt&&double&/span& &span class=&o&&*&/span&&span class=&n&&B&/span&&span class=&p&&,&/span&
&span class=&kt&&double&/span& &span class=&o&&*&/span&&span class=&n&&C&/span&&span class=&p&&,&/span&
&span class=&kt&&int&/span& &span class=&k&&const&/span& &span class=&n&&N&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&k&&const&/span& &span class=&n&&tid&/span& &span class=&o&&=&/span& &span class=&n&&blockDim&/span&&span class=&p&&.&/span&&span class=&n&&x&/span& &span class=&o&&*&/span& &span class=&n&&blockIdx&/span&&span class=&p&&.&/span&&span class=&n&&x&/span& &span class=&o&&+&/span& &span class=&n&&threadIdx&/span&&span class=&p&&.&/span&&span class=&n&&x&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&k&&const&/span& &span class=&n&&t_n&/span&&span class=&o&&=&/span&&span class=&n&&gridDim&/span&&span class=&p&&.&/span&&span class=&n&&x&/span&&span class=&o&&*&/span&&span class=&n&&blockDim&/span&&span class=&p&&.&/span&&span class=&n&&x&/span&&span class=&p&&;&/span&
&span class=&k&&while&/span&&span class=&p&&(&/span&&span class=&n&&tid&/span& &span class=&o&&&&/span& &span class=&n&&N&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&C&/span&&span class=&p&&[&/span&&span class=&n&&tid&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&A&/span&&span class=&p&&[&/span&&span class=&n&&tid&/span&&span class=&p&&]&/span& &span class=&o&&+&/span& &span class=&n&&B&/span&&span class=&p&&[&/span&&span class=&n&&tid&/span&&span class=&p&&];&/span&
&span class=&n&&tid&/span&&span class=&o&&+=&/span&&span class=&n&&t_n&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&在主机端:&br&&div class=&highlight&&&pre&&code class=&language-text&&vectorADD_gpu&&&blocksPerGrid, threadsPerBlock&&&(A, B, C, N);
&/code&&/pre&&/div&&br&blockDim.x、blockIdx.x、threadIdx.x分别表示每个block有多少thread、当前block的索引、当前thread的索引。&br&在主机(CPU)调用kernel函数,传递调用的grids、block、threads的数量和函数参数,kernel函数会在每个线程(threads)&b&同时&/b&对数组A、B、C内的tid(thread's ID)位置的元素进行&br&&div class=&highlight&&&pre&&code class=&language-text&&C[tid] = A[tid] + B[tid];
&/code&&/pre&&/div&&br&的计算。&br&也就是说如果两个1000个元素的矩阵相加,开启1000线程,一个指令同时在1000个线程上执行一次。相比于单核CPU(向量机)流水线式的串行操作,虽然gpu单个core计算能力很弱,但是通过大量线程进行同时计算,在数据量很大是会活动较为可观的加速效果。&br&&br&&b&同理,具体到cnn&/b&,利用gpu加速主要是在conv(卷积)过程上。卷积基本原理请自行学习。&br&conv过程同理可以像以上的向量加法一样通过cuda实现&b&并行化。&/b&具体的方法很多,不过最好的还是利用fft进行快速卷积。NVIDIA提供了cufft库实现fft,复数乘法则可以使用cublas库里的对应的level3的cublasCgemm函数。&br&再具体到各大框架是如何使用gpu对cnn进行加速的,目前主流的做法是使用NVIDIA的cudnn库&a href=&///?target=https%3A///cudnn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NVIDIA cuDNN&i class=&icon-external&&&/i&&/a&。这个库集成了tensors变量、cnn、rnn等重要基础模型的ff、bp、update的函数,并支持multi device,框架通过传递tensors并调用cudnn来实现cnn、rnn等模型的核心运算。&br&cudnn库和上面的cublas、cufft等库一样,是NVIDIA花重金打造的cuda加速库,性能优化几乎达到了巅峰,除非有强烈的造轮子冲动或者定制函数的需求(比如我),使用NVIDIA官方加速库是最佳选择。不过在GitHub的上一个叫deepcore的轻量级框架项目里,开发者声称cnn速度比cudnn快,看代码也是使用的fft快速卷积。说明cudnn还有提升潜力。&br&而且通过阅读NVIDIA的cudnn的sample,我觉得cudnn作为一个全面严谨的深度学习加速库(报错、张量定义),虽然体现了开发者高超的编程能力,但是对于个人使用者来说,体系过于庞大、使用太繁琐。&br&cuda菜鸟,抛砖引玉,如有错误望谅解并指正,不胜感激!
这里默认你说的gpu加速是指NVIDIA的cuda加速 CPU是中央处理单元,gpu是图形处理单元 简单的说,gpu由上千个流处理器(core)作为运算器。执行采用单指令多线程(SIMT)模式。 在cuda编程中有grids、blocks、threads三个维度,大量threads组成一个block,大量blo…
会基本的Linux指令就可以了,比如安装软件的apt install,cd, mkdir, ls, tar等这几个常用的。&br&安装好Ubuntu系统后,安装个anaconda,记得安装最后一个选项,是否把anaconda加入环境变量,选择yes,然后输入source ~/.bashrc让更改生效。然后再安装软件就更简单了,可以使用pip或者conda, 例如安装TensorFlow,命令为pip install tensorflow-gpu&br&如果不喜欢用vim,安装个pycharm等IDE。&br&没必要学很多Linux知识,边用边学也可以。尤其是你时间紧张的情况下。&br&~~~~~~&br&然后你会发现,Linux下除了没有QQ和游戏,写代码,尤其是Python,比windows下方便很多很多。感觉windows下的ipython和Linux下的ipython体验根本不是一个档次。
会基本的Linux指令就可以了,比如安装软件的apt install,cd, mkdir, ls, tar等这几个常用的。 安装好Ubuntu系统后,安装个anaconda,记得安装最后一个选项,是否把anaconda加入环境变量,选择yes,然后输入source ~/.bashrc让更改生效。然后再安装软件就更…
刚配好,参见这里 &a href=&///?target=http%3A//wh1te.me& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&wh1te.me&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
刚配好,参见这里
首先要确定你的 Mac 显卡是否支持 CUDA。关于支持 CUDA 的显卡列表可以在这里查看 &a href=&///?target=https%3A///cuda-gpus& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/cu&/span&&span class=&invisible&&da-gpus&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 。&br&&br&&p&在 macOS 上编译安装 MXNet 的大体步骤都是按照官方文档来进行安装即可。但由于每个人电脑环境不同,所以可能会出现一些依赖库/包的缺失,导致安装失败。&/p&&br&一、安装依赖软件&br&&br&&p&在 macOS 上,首先需要具有以下软件:&/p&&ul&&li&Homebrew (to install dependencies)&/li&&li&Git (to pull code from GitHub)&/li&&li&Homebrew/science (for linear algebraic operations)&/li&&li&OpenCV (for computer vision operations)&/li&&/ul&&p&如果上述已经安装了,就不需要再安装;如果没有,则按照下面的步骤安装:&/p&&div class=&highlight&&&pre&&code class=&language-text&&# 安装 Homebrew
$ /usr/bin/ruby -e &$(curl -fsSL /Homebrew/install/master/install)&
# 安装 Git 和 OpenCV
$ brew update
$ brew install git
$ brew tap homebrew/science
$ brew info opencv
$ brew install opencv
&/code&&/pre&&/div&&br&二、编译 MXNet&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&# 下载源码
$ git clone --recursive /dmlc/mxnet
&/code&&/pre&&/div&&p&然后还需要安装 openblas:&/p&&div class=&highlight&&&pre&&code class=&language-text&&# 安装 openblas
$ brew install --fresh -vd openblas
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:
-L/usr/local/opt/openblas/lib
CPPFLAGS: -I/usr/local/opt/openblas/include
==& Summary
/usr/local/Cellar/openblas/0.2.18_2: 20 files, 41.8M, built in 12 minutes 33 seconds
&/code&&/pre&&/div&&p&如果没有安装 openblas,则会有类似 fatal error: 'cblas.h' file not found 的错误,详见 &a href=&///?target=https%3A///dmlc/mxnet/issues/572& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&blas issue compile issue · Issue #572 · dmlc/mxnet · GitHub&i class=&icon-external&&&/i&&/a&。&/p&&br&&p&接下来修改配置文件:&/p&&div class=&highlight&&&pre&&code class=&language-text&&$ cd mxnet
$ cp make/osx.mk ./config.mk
&/code&&/pre&&/div&&br&&p&用 vim 或其他编辑器打开 config.mk,在 USE_BLAS = apple 下面加入如下 ADD_LDFLAGS = -I/usr/local/opt/openblas/lib 和 ADD_CFLAGS = -I/usr/local/opt/openblas/include:&/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&USE_BLAS = apple
ADD_LDFLAGS = -I/usr/local/opt/openblas/lib
ADD_CFLAGS =
-I/usr/local/opt/openblas/include
&/code&&/pre&&/div&&br&&p&如果你的显卡支持 CUDA,在 config.mk 里面,将 USE_CUDA = 0 设置为 USE_CUDA = 1 就可以了。&/p&&br&&p&最后再编译即可:&/p&&div class=&highlight&&&pre&&code class=&language-text&&$ make -j$(sysctl -n hw.ncpu)
&/code&&/pre&&/div&&br&三、在 Python 中使用 MXNet&br&&br&&p&编译安装完成之后,若要使用 MXNet 的 Python 接口,还需要将 mxnet/python 添加到 Python 的包搜索路径。至少有三种方式可以实现。&/p&&br&&p&1. python 代码手动加载&/p&&div class=&highlight&&&pre&&code class=&language-text&&import os,
cur_path = os.path.abspath(os.path.dirname(__file__));
mxnet_lib_path = os.path.join(cur_path, 'mxnet/python');
sys.path.append(mxnet_lib_path);
&/code&&/pre&&/div&&p&在没有将 mxnet/python 添加到 PYTHONPATH 之前,依旧可以运行 /example/image-classification 里面的一些测试案例,就是因为案例里面有一行 import find_mxnet,而 find_mxnet 的作用就是手动加载 mxnet/python:&/p&&div class=&highlight&&&pre&&code class=&language-text&&# find_mxnet.py
import mxnet as mx
except ImportError:
import os, sys
curr_path = os.path.abspath(os.path.dirname(__file__))
sys.path.append(os.path.join(curr_path, &../../python&))
import mxnet as mx
&/code&&/pre&&/div&&br&&p&2. 将路径加到环境变量 PYTHONPATH 中&/p&&p&这种方法需要修改 shell 的配置文件。如果使用的 bash,则修改 ~/.bashrc;若使用的是 zsh,则修改 ~/.zshrc;其他类似。&/p&&p&在 bash 配置文件中加入下面这一行:&/p&&div class=&highlight&&&pre&&code class=&language-text&&export PYTHONPATH=path_to_mxnet_root/python
&/code&&/pre&&/div&&p&其中 path_to_mxnet_root 是下载的 mxnet 源码目录。&/p&&br&&p&3. 全局安装 mxnet&/p&&p&直接运行 mxnet/python/setup.py,将 mxnet 添加到全局路径即可:&/p&&div class=&highlight&&&pre&&code class=&language-text&&python setup.py install --user
&/code&&/pre&&/div&&p&运行上面的命令后,脚本会在 ~/.local 目录下创建一个 lib 目录,里面有一个 python-2.7/site-packages 文件夹。&/p&&p&如果是 sudo python setup.py install,则上面的目录会在 /usr/lib 下。&/p&
首先要确定你的 Mac 显卡是否支持 CUDA。关于支持 CUDA 的显卡列表可以在这里查看
。 在 macOS 上编译安装 MXNet 的大体步骤都是按照官方文档来进行安装即可。但由于每个人电脑环境不同,所以可能会出现一些依赖库/包的缺失,导致安…
谢邀,看你做什么任务了,要是想细看,可以看看 [1]kaiming he 在2015CVPR的文章(作为残差网络铺垫),具体就是研究了CNN的层数以及精度的关系,里面特别表示了,只要神经网络层数很深,那么我们减少卷积核心的数量,也是可以的。&br&在[2]中,也特别说明了,更加深的层数,抽象能力更加的好,但是,我觉得普通来说,五个卷积层数已经足够使用,已经可以学到了一个很好的图像表达,比如在[3]中,直接把学好的feature拿过来使用,也可以达到很好的效果。在[4]中更是分析了相关每一个卷积层表达的具体的抽象。说明了Alex net当中其实已经学到了蛮不错的表达。&br&[1] Convolutional Neural Networks at Constrained Time Cost
Kaiming He Jian Sun&br&[2]Network in network&br&[3]CNN Features off-the-shelf: an Astounding Baseline for Recognition arXiv: [cs.CV] 12 May 2014 Ali Sharif Razavian Hossein Azizpour Josephine Sullivan Stefan Carlsson&br&[4]Visualizing and Understanding Convolutional Networks &br&Matthew D. Zeiler and Rob Fergus
谢邀,看你做什么任务了,要是想细看,可以看看 [1]kaiming he 在2015CVPR的文章(作为残差网络铺垫),具体就是研究了CNN的层数以及精度的关系,里面特别表示了,只要神经网络层数很深,那么我们减少卷积核心的数量,也是可以的。 在[2]中,也特别说明了,…
楼上关于finetuning如何freeze的方法已经说得很清楚了,这边在补充自己最近关于freeze的体会。&br&做freeze操作时,通常还会根据数据集在不同情况进行有选择的性的finetune。&br&如small datasets时,可以freeze前面conv layer-& fc4086来提取cnn在imagenet上的多类泛化特征来辅助作为分类的feature,再对如这边revise的fc-20-&softmax进行training。&br&以此类推,如果是medium datasets则freeze到一半的conv。个人理解这样做的很大原因在于lower level layer具有更强泛化的basic feature,同时记得考量你的数据来选择。&br&如下图总结:&br&&img src=&/bf38eaf1b177cdf575dc7_b.png& data-rawwidth=&1114& data-rawheight=&556& class=&origin_image zh-lightbox-thumb& width=&1114& data-original=&/bf38eaf1b177cdf575dc7_r.png&&顺便再引自cs231n lecture11的话“more data = retain more of the network(or all of it)&&br&以及learning rate 的tips: &br&“use only ~1/10th of the original learning rate in finetuning top layer,and ~1/100th on intermedia layers”
楼上关于finetuning如何freeze的方法已经说得很清楚了,这边在补充自己最近关于freeze的体会。 做freeze操作时,通常还会根据数据集在不同情况进行有选择的性的finetune。 如small datasets时,可以freeze前面conv layer-& fc4086来提取cnn在imagenet上的多…
&p&在 caffe 上配置 LSTM 时,数据的维度比较复杂。比如在 CNN 处理图片时,caffe 的数据维度一般是 N*C*H*W,N 是 batch size,C 是 channel,W 是 width,H 是 height;但是 LSTM 的数据维度是 T*N*...,T 是 sequence length,N 是 batch size。很多人就会搞混这里的 batch size 和 CNN 下的 batch size,如果是一个 CNN+LSTM 网络,到底 data layer 的 batch size 按照哪个配置?&/p&&p&我是理解是这样:比如你要处理视频的连续帧,数据是这样的:data 数据集是每帧的图片 raw data(lenx3x320x320),label 数据集是每帧对应的 label (lenx1),cont 代表这帧是否为连续帧,0代表头帧,1代表连续帧 (lenx1)。&/p&&p&data layer 的 batch_size 其实是 T*N,因为只有1个流,所以这里 N 是 1。如果 data layer 的 batch_size 设置成 64,T 就是 64,N 就是1,照常进行后续 convolution layer 的配置。&/p&&div class=&highlight&&&pre&&code class=&language-protobuf&&&span class=&n&&layer&/span& &span class=&p&&{&/span&
&span class=&n&&name&/span&&span class=&o&&:&/span& &span class=&s&&&data&&/span&
&span class=&n&&type&/span&&span class=&o&&:&/span& &span class=&s&&&HDF5Data&&/span&
&span class=&n&&top&/span&&span class=&o&&:&/span& &span class=&s&&&data&&/span&
&span class=&n&&top&/span&&span class=&o&&:&/span& &span class=&s&&&label&&/span&
&span class=&n&&top&/span&&span class=&o&&:&/span& &span class=&s&&&cont&&/span&
&span class=&n&&hdf5_data_param&/span& &span class=&p&&{&/span&
&span class=&n&&source&/span&&span class=&o&&:&/span& &span class=&s&&&train_hdf5.txt&&/span&
&span class=&n&&batch_size&/span&&span class=&o&&:&/span& &span class=&mi&&64&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&然后 convolution layer 后面接全连接层,然后接 LSTM layer 时,比如全连接层的 output 是 10,那这层输出的数据就是 64*10。如果想在这时候加个 LSTM layer,因为 cont 是 64*1 的,就需要加个 reshape 层。&/p&&div class=&highlight&&&pre&&code class=&language-protobuf&&&span class=&n&&layer&/span& &span class=&p&&{&/span&
&span class=&n&&name&/span&&span class=&o&&:&/span& &span class=&s&&&reshape&&/span&
&span class=&n&&type&/span&&span class=&o&&:&/span& &span class=&s&&&Reshape&&/span&
&span class=&n&&bottom&/span&&span class=&o&&:&/span& &span class=&s&&&fc1&&/span&
&span class=&n&&top&/span&&span class=&o&&:&/span& &span class=&s&&&reshape1&&/span&
&span class=&n&&reshape_param&/span& &span class=&p&&{&/span&
&span class=&n&&shape&/span& &span class=&p&&{&/span& &span class=&n&&dim&/span&&span class=&o&&:&/span& &span class=&mi&&0&/span& &span class=&n&&dim&/span&&span class=&o&&:&/span& &span class=&mi&&1&/span& &span class=&n&&dim&/span&&span class=&o&&:&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span& &span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&就是把原来 64*10 的数据,reshape 成 64*1*10,这样才能匹配上输入的 cont 64*1。&/p&&div class=&highlight&&&pre&&code class=&language-protobuf&&&span class=&n&&layer&/span& &span class=&p&&{&/span&
&span class=&n&&name&/span&&span class=&o&&:&/span& &span class=&s&&&lstm&&/span&
&span class=&n&&type&/span&&span class=&o&&:&/span& &span class=&s&&&LSTM&&/span&
&span class=&n&&bottom&/span&&span class=&o&&:&/span& &span class=&s&&&reshape1&&/span&
&span class=&n&&bottom&/span&&span class=&o&&:&/span& &span class=&s&&&cont&&/span&
&span class=&n&&top&/span&&span class=&o&&:&/span& &span class=&s&&&output&&/span&
&span class=&n&&recurrent_param&/span& &span class=&p&&{&/span&
&span class=&n&&num_output&/span&&span class=&o&&:&/span& &span class=&mi&&1&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&以上是个人理解,经验不足可能有错,欢迎指出。&/p&
在 caffe 上配置 LSTM 时,数据的维度比较复杂。比如在 CNN 处理图片时,caffe 的数据维度一般是 N*C*H*W,N 是 batch size,C 是 channel,W 是 width,H 是 height;但是 LSTM 的数据维度是 T*N*...,T 是 sequence length,N 是 batch size。很多人就会…
利益相关,匿了。&br&&br&过去一年时间内先后租用过AWS G2实例、IBM SoftLayer GPU物理机、UCloud GPU云主机、阿里云HPC(G2、G4)。&br&&br&按照机器属性来分的话,AWS G2、UCloud GPU云主机都属于虚拟机直通GPU方案;而IBM SoftLayer 、阿里云HPC都属于物理机方案。&br&&br&使用体验上,虚拟机直通GPU方案更接近弹性计算,物理机方案更接近服务器托管。&br&&br&弹性计算的好处显而易见,灵活扩容,按量付费。然而在计算性能上会打折扣。&br&&br&物理机的好处是性能保证,无虚拟化开销,无争抢。&br&&br&对于题主的应用,深度学习需要消耗大量计算资源,关注的是性能而不是灵活,不适合用虚拟机直通方案。物理机成为首选。如果采用托管方案,国内的IDC管理落后,办事效率低下,三天两头停电断网,小公司难以handle。自建机房的时间和经济成本都算上,将来规模扩张,机器更新换代,都是难言之痛。&br&&br&如果业务集中在海外,比如北美,那么可以考虑IBM SoftLayer,网络性能优越,当然价格不菲。&br&对于业务在国内的小公司,阿里HPC不可否认成为首选。&br&&br&在阿里云HPC公测阶段申请了G2,技术支持人员非常给力,迅速解决了部署业务过程中的各种小问题,流畅上云。后来推出G4机型,配备双卡Tesla M40,做深度学习无论稳定性还是速度都是一流,果断升配。&br&&br&由于深度学习技术本身也在不断演进,一些开发调优、训练调参是不可避免的,据我所知国内目前没有一家深度学习的公司敢说,我这个模型可以放之四海而皆准。使用云服务器好处就是,如果需要同时跑数十个模型,可以采用短租的方式,跑完任务就释放。自己攒机器的话,为了跑数十个模型攒数十台机器,跑完就砸到手里了,除非你也租出去给别人用。&br&&br&估计知乎上有不少做face的同行。匿了。
利益相关,匿了。 过去一年时间内先后租用过AWS G2实例、IBM SoftLayer GPU物理机、UCloud GPU云主机、阿里云HPC(G2、G4)。 按照机器属性来分的话,AWS G2、UCloud GPU云主机都属于虚拟机直通GPU方案;而IBM SoftLayer 、阿里云HPC都属于物理机方案。 使…
其实这个问题不该在这里问的...这个问题真的很容易知道哪里有问题...你只要把loss层的输入blob的内容输出来看看就知道了...87.3365,这是个很特殊的数字...NAN经过SoftmaxWithLoss就产生了这个数字...所以就是你的FC8输出全是NAN...具体为什么是NAN,你说你前面迭代几十次loss都是小数值,那基本上是学习率的问题了...把学习率调小一点重新训练就知道行不行了...
其实这个问题不该在这里问的...这个问题真的很容易知道哪里有问题...你只要把loss层的输入blob的内容输出来看看就知道了...87.3365,这是个很特殊的数字...NAN经过SoftmaxWithLoss就产生了这个数字...所以就是你的FC8输出全是NAN...具体为什么是NAN,你说你…
以上两位说的很好,自己动手,丰衣足食。&br&若需借力,建议用cuda-convnet2,自带画loss和accuracy曲线功能。&br&&img src=&/ca4e703a48f8eb_b.png& data-rawwidth=&415& data-rawheight=&31& class=&content_image& width=&415&&&img src=&/939e754f322fc8b208aa9f510e7d1fa1_b.png& data-rawwidth=&850& data-rawheight=&641& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&/939e754f322fc8b208aa9f510e7d1fa1_r.png&&除了曲线,还可以绘制图像,例如中间某个卷积层的卷积核可视化效果:&br&&img src=&/dde92a70f89d6bdd477f3e8_b.png& data-rawwidth=&415& data-rawheight=&31& class=&content_image& width=&415&&&img src=&/0fda58ca1af513f4ed256d0d5af7657c_b.png& data-rawwidth=&690& data-rawheight=&520& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&/0fda58ca1af513f4ed256d0d5af7657c_r.png&&以及预测结果:&br&&img src=&/6f6fe0ba702e49f4fc6b_b.png& data-rawwidth=&415& data-rawheight=&31& class=&content_image& width=&415&&&img src=&/bae474a616c_b.png& data-rawwidth=&785& data-rawheight=&591& class=&origin_image zh-lightbox-thumb& width=&785& data-original=&/bae474a616c_r.png&&自己也可以试着实现下这些功能,用过matlab的同学都应该觉得不难。
以上两位说的很好,自己动手,丰衣足食。 若需借力,建议用cuda-convnet2,自带画loss和accuracy曲线功能。 除了曲线,还可以绘制图像,例如中间某个卷积层的卷积核可视化效果: 以及预测结果: 自己也可以试着实现下这些功能,用过matlab的同学都应该觉得…
更新:caffe有了官方windows版本&p&&a href=&///?target=https%3A///BVLC/caffe/tree/windows& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/BVLC/caffe/t&/span&&span class=&invisible&&ree/windows&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&配置更方便&br&==========================&br&谢邀。推荐一个repo &a href=&///?target=https%3A///happynear/caffe-windows& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - happynear/caffe-windows: Configure Caffe in one hour for Windows users.&i class=&icon-external&&&/i&&/a&按照readme来就好了。。亲测可用。建议安装anaconda python。
更新:caffe有了官方windows版本 配置更方便 ========================== 谢邀。推荐一个repo 按照readme来就好了。。亲测可用。建议安装anaconda p…
显卡:(GPU)主流是Nvidia的GPU,深度学习本身需要大量计算。GPU的并行计算能力,在过去几年里恰当地满足了深度学习的需求。AMD的GPU基本没有什么支持,可以不用考虑。&br&&br&&br&驱动:没有显卡驱动,就不能识别GPU硬件,不能调用其计算资源。但是呢,Nvidia在Linux上的驱动安装特别麻烦,尤其对于新手简直就是噩梦。得屏蔽第三方显卡驱动。下面会给出教程。&br&&br&CUDA:是Nvidia推出的只能用于自家GPU的并行计算框架。只有安装这个框架才能够进行复杂的并行计算。主流的深度学习框架也都是基于CUDA进行GPU并行加速的,几乎无一例外。还有一个叫做cudnn,是针对深度卷积神经网络的加速库。&br&&br&驱动安装教程:&br&&br&&img data-rawwidth=&750& data-rawheight=&1334& src=&/v2-bf42ae705ce08b3e5ec7f5d6_b.png& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-bf42ae705ce08b3e5ec7f5d6_r.png&&
显卡:(GPU)主流是Nvidia的GPU,深度学习本身需要大量计算。GPU的并行计算能力,在过去几年里恰当地满足了深度学习的需求。AMD的GPU基本没有什么支持,可以不用考虑。 驱动:没有显卡驱动,就不能识别GPU硬件,不能调用其计算资源。但是呢,Nvidia在Linux…
必须是我司的PPL~ 吊打所有这些开源闭源库和框架~&br&&br&分享一个数据,vgg16单核ARM cortex-a57@2.1GHz是1.2s,数据类型fp32
必须是我司的PPL~ 吊打所有这些开源闭源库和框架~ 分享一个数据,vgg16单核ARM cortex-a57@2.1GHz是1.2s,数据类型fp32
&p&CLion (build ) + &a href=&///?target=https%3A//ij.bazel.build/docs/bazel-plugin.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bazel Plugin - IntelliJ with Bazel&i class=&icon-external&&&/i&&/a& 环境:&/p&&p&前者是Jetbrains公司出品的C++ IDE,后者是支持bazel工具链的插件。刚刚build好。&/p&&p&说一下踩过的坑:&/p&&p&1. &a href=&///?target=https%3A///bazelbuild/intellij/issues/69& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bazel plugin no longer working in CLion 2017.1 · Issue #69 · bazelbuild/intellij&i class=&icon-external&&&/i&&/a& 插件对于开始的新版本CLion不支持,所以我特意换回了老版本的CLion&/p&&p&2. 先在命令行中按照 &a href=&///?target=https%3A//www.tensorflow.org/install/install_sources& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&tensorflow.org/install/&/span&&span class=&invisible&&install_sources&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 当中的指导在命令行中先编译一遍。我遇到的问题就是master分支不能直接编译,需要换成比如r1.1这样的release分支才能编译成功。&/p&&p&后续再答。&/p&&p&update &/p&&p&&a href=&///?target=https%3A///tensorflow/tensorflow/blob/master/tensorflow/contrib/cmake/README.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tensorflow/tensorflow cmake build&i class=&icon-external&&&/i&&/a& tf 推出了实验性质的使用cmake工具build的方法。有感兴趣的可以试一下。&/p&&p&&br&&/p&&p&update &/p&&p&* bazel plugin已经支持新版的CLion了&/p&&p&* &a href=&///?target=https%3A///bazelbuild/bazel/issues/3063& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bazel 0.5.0 build fails on Mac OS X El Capitan · Issue #3063 · bazelbuild/bazel&i class=&icon-external&&&/i&&/a& 根据这个issue, 0.51以后的bazel 在mac下build会遇到xcode相关的问题,解决方案是install Xcode并运行:&/p&&div class=&highlight&&&pre&&code class=&language-text&&sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
&/code&&/pre&&/div&
CLion (build ) +
环境:前者是Jetbrains公司出品的C++ IDE,后者是支持bazel工具链的插件。刚刚build好。说一下踩过的坑:1.
&a href=&///?target=http%3A//www.liuhao.me//neural-networks-and-deep-learning-pdf-version/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neural Networks and Deep Learning-《神经网络与深度学习》-pdf版本&i class=&icon-external&&&/i&&/a&&br&这本书非常适合神经网路和深度学习入门,零基础,贯穿书中的例子就是MNIST手写数据集的图像识别,代码都是用Python写的。但是目前只有网页版的,这里提供一个pdf版本。
这本书非常适合神经网路和深度学习入门,零基础,贯穿书中的例子就是MNIST手写数据集的图像识别,代码都是用Python写的。但是目前只有网页版的,这里提供一个pdf版本。
难点我认为不在算法移植。移动端不用做training,主要是要做propagating, 所以问题应该集中在移动端能不能放下并且跑得动很大的network。关于缩小DNN 大小并且保持performance的方法,建议去看看Microsoft 做speech recognition 的大牛Jinyu Li 的一些列paper,应该会很有启发。
难点我认为不在算法移植。移动端不用做training,主要是要做propagating, 所以问题应该集中在移动端能不能放下并且跑得动很大的network。关于缩小DNN 大小并且保持performance的方法,建议去看看Microsoft 做speech recognition 的大牛Jinyu Li 的一些列pap…
你要注册一下nvidia,然后填问卷调查 。或者留下邮箱我发给你。&br&&br& 这么多人私信我,就没人点个赞吗 (⊙0⊙)
你要注册一下nvidia,然后填问卷调查 。或者留下邮箱我发给你。
这么多人私信我,就没人点个赞吗 (⊙0⊙)
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 pycaffe 绘制loss曲线 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信