标签: caffe

一个简单的卷积神经网络代码

我对卷积神经网络(CNN)感兴趣,作为适用于使用可重新配置硬件加速的计算广泛应用的一个例子(也就是说FPGA)

为了做到这一点,我需要分析一个简单的CNN代码,我可以用它来了解它们是如何实现的,如何在每一层的发生,如何各层的输出被馈送到下一个的输入端的计算.我熟悉理论部分(http://cs231n.github.io/convolutional-networks/)

但是,我对训练CNN不感兴趣,我想要一个完整的,自包含的CNN代码,这是经过预先训练的,并且所有的权重和偏差值都是已知的.

我知道有很多CNN库,即Caffe,但问题是没有自包含的简单示例代码.即使对于最简单的Caffe示例"cpp_classification",也会调用许多库,CNN的体系结构表示为.prototxt文件,其他类型的输入如.caffemodel和.binaryproto.也调用openCV2库.有抽象层和层,不同的库一起工作以产生分类结果.

我知道需要那些抽象来生成一个"可用的"CNN实现,但对于需要学习裸机代码的硬件人来说,这太过于"无关紧要的工作".

我的问题是:任何人都可以引导我进入一个简单且独立的CNN实现,我可以从这开始吗?

deep-learning caffe

11
推荐指数
2
解决办法
2万
查看次数

编写优胜美地的咖啡

我正试图在Yosemite上安装caffe,而我的C并不是最强的.这是我的错误:

Alis-MacBook-Pro:caffe ali$ make all
NVCC src/caffe/layers/absval_layer.cu
/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(27): error: expected a ";"

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(29): error: inline specifier allowed on function declarations only

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(29): error: incomplete type is not allowed

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(29): error: identifier "atomic_int_least32_t" is undefined

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(29): error: identifier "pw" is undefined

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(30): error: expected a ";"

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(90): error: invalid specifier outside a class declaration

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(92): error: "this" may only be used inside a nonstatic member function

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(95): error: invalid specifier outside a class declaration

/usr/local/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp(95): error: function "boost::detail::get_deleter" may not be …
Run Code Online (Sandbox Code Playgroud)

c++ gcc osx-yosemite caffe

10
推荐指数
2
解决办法
2066
查看次数

如何以HDF5格式提供caffe多标签数据?

我想使用带有矢量标签的caffe,而不是整数.我已经检查了一些答案,看来HDF5似乎更好.但后来我遇到了错误:

accuracy_layer.cpp:34]检查失败:outer_num_ * inner_num_ == bottom[1]->count()(50 vs. 200)标签数量必须与预测数量匹配; 例如,如果标签轴== 1并且预测形状是(N,C,H,W),则标签计数(标签的数量)必须是N*H*W,{0,1,...,C-1}中的整数值.

HDF5创建为:

f = h5py.File('train.h5', 'w')
f.create_dataset('data', (1200, 128), dtype='f8')
f.create_dataset('label', (1200, 4), dtype='f4')
Run Code Online (Sandbox Code Playgroud)

我的网络由以下人员生成:

def net(hdf5, batch_size):
    n = caffe.NetSpec()
    n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)
    n.ip1 = L.InnerProduct(n.data, num_output=50, weight_filler=dict(type='xavier'))
    n.relu1 = L.ReLU(n.ip1, in_place=True)
    n.ip2 = L.InnerProduct(n.relu1, num_output=50, weight_filler=dict(type='xavier'))
    n.relu2 = L.ReLU(n.ip2, in_place=True)
    n.ip3 = L.InnerProduct(n.relu1, num_output=4, weight_filler=dict(type='xavier'))
    n.accuracy = L.Accuracy(n.ip3, n.label)
    n.loss = L.SoftmaxWithLoss(n.ip3, n.label)
    return n.to_proto()

with open(PROJECT_HOME + 'auto_train.prototxt', 'w') as f: …
Run Code Online (Sandbox Code Playgroud)

python neural-network deep-learning caffe

10
推荐指数
1
解决办法
2万
查看次数

Caffe | 检查失败:错误== cudaSuccess(2对0)内存不足

我正在尝试在Caffe上训练一个网络.我的图像大小为512x640.批量大小为1.我正在尝试实施FCN-8.

我目前在具有4GB GPU内存的Amazon EC2实例(g2.2xlarge)上运行此操作.但是当我运行求解器时,它会立即抛出错误

Check failed: error == cudaSuccess (2 vs. 0)  out of memory
*** Check failure stack trace: ***
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我从这里开始吗?

amazon-web-services neural-network deep-learning caffe

10
推荐指数
1
解决办法
2万
查看次数

是否存在神经网络的通用格式

不同的团队使用不同的库来训练和运行神经网络(caffe,torch,theano ......).这使共享变得困难:每个库都有自己的格式来存储网络,每次要测试其他团队的工作时都必须安装新的库.

我正在寻找解决方案,使这不那么乏味: - 是否有一个首选(共享?)格式来存储神经网络? - 是否有服务或库可以帮助处理不同类型的网络/或将一种类型转换为另一种类型?

谢谢!

neural-network theano deep-learning torch caffe

10
推荐指数
2
解决办法
2209
查看次数

是否可以在不重新编译程序的情况下在BLAS库之间切换?

例如,我可以同时在我的Ubuntu 14.04上安装Atlas,OpenBlas,MKL并在它们之间切换而无需重新编译Caffe吗?

c++ linux blas openblas caffe

10
推荐指数
3
解决办法
1756
查看次数

Caffe:如何获得Python层的阶段?

我在caffe中创建了一个"Python"图层"myLayer",并在网中使用它train_val.prototxt我像这样插入图层:

layer {
  name: "my_py_layer"
  type: "Python"
  bottom: "in"
  top: "out"
  python_param {
    module: "my_module_name"
    layer: "myLayer"
  }
  include { phase: TRAIN } # THIS IS THE TRICKY PART!
}
Run Code Online (Sandbox Code Playgroud)

现在,我的图层只参与网络的TRAINing阶段,
我怎么知道在我的图层的setup功能?

class myLayer(caffe.Layer):
  def setup(self, bottom, top):
     # I want to know here what is the phase?!!
  ...
Run Code Online (Sandbox Code Playgroud)

PS,
我在"Caffe Users"谷歌小组上发布了这个问题.如果有什么东西在那里,我会更新.

python neural-network deep-learning caffe pycaffe

10
推荐指数
2
解决办法
3623
查看次数

全球共享有什么作用?

我最近在caffe的Pooling层中找到了"global_pooling"标志,但是在这里的文档(Layer Catalog) 或者这里(Pooling doxygen doc)中无法找到它.

与普通的Pool-Layer行为相比,是否有一个简单的前向解释?

machine-learning image-processing deep-learning caffe conv-neural-network

10
推荐指数
2
解决办法
6784
查看次数

计算Caffe CNN架构中的乘加运算(MAC)的数量

最近我一直在对一些CNN进行基准测试,包括时间,乘加操作数(MAC),参数数量和模型大小.我已经看到了一些类似的SO问题(这里这里),在后者中,他们建议使用Netscope CNN Analyzer.这个工具允许我通过输入我的Caffe网络定义来计算我需要的大部分东西.

然而,我在论文和互联网上看到的一些架构的乘加操作的数量与Netscope输出的不匹配,而其他架构匹配.我总是将FLOP或MAC与netscope中的MACC列进行比较,但是在某些时候我忘记了一个~10倍的因素(查看下表以获取更多细节).

Architecture  ----  MAC (paper/internet) ---- macc column in netscope
VGG 16                    ~15.5G                       ~157G
GoogLeNet                 ~1.55G                       ~16G
Run Code Online (Sandbox Code Playgroud)

Netscope中引用GoogLeNet macc编号VGG16 macc编号.

是否有人使用该工具可以指出我在阅读Netscope输出时我正在做的错误?

flops deep-learning caffe conv-neural-network

10
推荐指数
1
解决办法
5062
查看次数

如何使用"顶部"和"底部"参数来构建网络体系结构

在Caffe原型文本中,每个图层都包含"顶部"或"底部"参数,以指定图层之间的连接.然而,有时候,例如,"顶部"是图层本身(为什么我们必须将它链接到自身?)或者有几个"顶部"图层."顶部"和"底部"参数的确切含义以及使用它们的规则是什么?

caffe

10
推荐指数
2
解决办法
2532
查看次数