小编bro*_*ous的帖子

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

我对卷积神经网络(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万
查看次数

在Linux下获取缓冲区的物理地址

我正在Xilinx的Microblaze上运行带有完整MMU的Linux内核3.3.我正在做的任务要求我知道以下内容:我需要创建一个文本文件(缓冲区)并找到该缓冲区的物理地址,我不希望内核将此文件写入不连续的内存区域.

我需要这个的原因是因为我有一个DMA引擎从预设的物理内存地址流式传输数据,所以我需要强制Linux在那个确切的内存位置创建缓冲区文件,以便当我将数据写入此文件时立即传输由DMA引擎到另一个硬件核心

更多细节:

我的系统有一个512 MB DDR3 RAM通过"Xilinx"多端口内存控制器(MPMC)连接到系统.该内存控制器的基地址为0x90000000,系统中的所有单元通过该控制器访问内存,包括MicroBlaze,DMA我所使用的单元使用称为本机个性化接口(NPI)的特殊接口,以非常低的级别与存储器通信,从而产生非常高的速度性能.

这个NPI DMA单元最初设计用于一个名为"xilkernel"的非常基本的嵌入式内核,它不支持虚拟内存,MMU也不是MicroBlaze的一部分,因此程序员可以看到操作系统代码所在的位置并选择物理内存地址如0x91800000作为DMA将从中流出的源地址,然后程序员可以将文件放在该确切的地址中并运行系统

当我们需要迁移项目以使用Linux而不是xilkernel时我们遇到了这个问题,我在外部存储设备上有文件,我可以从Linux访问作为块设备,我需要将每个文件移动到主内存(DDR3 RAM)并使DMA流成为文件.目前来自固定地址的DMA流,但如果需要,我可以使它成为通用的.

embedded mmap linux-kernel embedded-linux microblaze

7
推荐指数
2
解决办法
3266
查看次数