alsa lib和utils交叉编译与移植

02.alsa_lib和alsa_utils交叉编译 1)–with-alsa-inc-prefix:指定alsa-lib头文件目录。2)–with-alsa-prefix:指定alsa-lib库文件目录。1)要先编译alsa-lib后编译alsa-utils,有依赖关系。3)这里使用的是orangepi one的toolchain环境。1)make ARCH=arm,设置生成的文件运行的平台。2)生成的文件在当前目录的_install目录。2)make时要加上ARCH参数。 阅读详情
一、PC端使用alsa
1)PC上使用alsa时,正常的安装alsa-lib和alsa-util即可,alsa-lib提供alsa音频程序运行所需要的库,alsa-util主要生成可执行程序,在程序运行时,在link里添加-lasound即可使用
2)PC端使用alsa编程,具体过程可以参考网上的链接,基本都是一样的
 二、将alsa移植到arm时的步骤
1.alsa交叉编译
>下载alsa-lib和alsa-util
>切换到alsa-lib目录下,执行
./configure --host=arm-linux-gnueabihf--prefix=/usr/local/share/arm-alsa --enable-shared --disable-python--with-configdir=/usr/local/share/alsa--with-plugindir=/usr/local/lib/alsa_lib CC=arm-linux-gnueabihf-gccCXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld
解释:1)一般在makefile时,部分程序会首先执行配置文件进行配置,然后再生成makefile文件,注意不同工程的配置方案并不相同,这些命令不一定在其他配置文件中也能使用
          2)--host:为使用的交叉编译工具名,直接使用arm-linux也可以,根据PC上安装的交叉编译工具来决定;
          3)--prefix:即makeinstall时程序安装的目录,可以根据自己的情况进行修改,不用拘泥
          4)--enable:开启功能  --disable:关闭功能
          5)--with-configdir:alsa配置文件所在目录,本目录要定好位置,交叉编译过后,移植到板子上时要和PC上路径一致。默认alsa配置文件会在安装目录里,不过根据经验,最好提出来,因为没有提出来的时候会报错
          6)--with-plugindir:alsa_lib所在目录,目前意义不明,可以自由定位,也可以默认安装
          7)CC,CXX,LD:我单独加的,即配置生成的makefile文件中的编译工具为这几项
>切换到alsa-util目录下,执行
./configure --host=arm-linux-gnueabihf--prefix=/usr/local/share/arm-alsaCFLAGS="-I/usr/local/share/arm-alsa/include"LDFLAGS="-L/usr/local/share/arm-alsa/lib -lasound"--disable-alsamixer --disable-xmlto--with-alsa-inc-prefix=/usr/local/share/arm-alsa/include--with-alsa-prefix=/usr/local/share/arm-alsa/libCC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++LD=arm-linux-gnueabihf-ld
解释:1)注意其中几个特殊的命令就行,不过不能少
>   1)移植,将/usr/local/share目录下的alsa,arm-alsa拷贝到开发板的/usr/local/share目录下,将/usr/local/lib目录下的alsa_lib拷贝到开发板上/usr/local/lib目录下
    2)将arm-alsa/lib目录下的文件拷贝到/lib目录下,sudo cp -rfa/usr/local/share/arm-alsa/lib /lib
    3)将arm-alsa/bin目录下的文件拷贝到/sbin目录下,sudo cp -rfa/usr/local/share/arm-alsa/bin /sbin
    4)将arm-alsa/sbin目录下的文件拷贝到/sbin目录下,sudo cp -rfa/usr/local/share/arm-alsa/bin /sbin
    5)添加环境变量,执行 sudo vi/etc/profile,在结尾添加exportALSA_CONFIG_PATH=/usr/local/share/alsa/alsa.conf,然后执行source/etc/profile
解释:    1)移植时一定要和PC上目录对应
            2)只需要库的话,alsa-util理论上不需要安装,也不用拷贝bin和sbin
            3)PC上使用eclipse的远程登录直接拷贝到板子上可能存在可执行文件不能执行的问题,所以要对bin,sbin目录下的可执行文件赋权限,执行sudochomd 777
            4)cp命令中的-rfa是组合命令,r是可以循环层次拷贝文件夹,f是强制覆盖
            5)环境变量的添加方法有多种,这里使用的是一种,还可以在/etc/bash.bash.rc等目录中添加,具体的运行机制略有不同,但都可以成功,具体可以网上查阅
>如果开发板上有正常的声卡配置,有3.5mm声音输入,以上步骤完成后就可以了,程序应该能正常运行,可以执行aplay和arecord等命令来测试

2.使用USB麦克风时
>USB麦克接入后
      1)执行cat/proc/asound/cards,会输出接入声卡的信息,有默认系统的设备和自己的USB设备,对应有设备号
      2)执行ls/dev/snd,会输出当前的设备,其中USB设备对应的为controlC1,pcmC1D0p(与之类似),其中C1b表示card1,D0表示driver 1
>执行sudo~/.asoundrc,在其中添加
pcm.!default {
      typehw
      card1
      device0
}
ctl.!default {
      typehw
      card1
      device0
}
解释:  1).asoundrc这个文件可能不存在,创建一个即可,因为程序在调用alsa时,会进入alsa.conf这个配置文件,这个配置文件会默认搜索到~/.asoundrc
          2)card 1和driver0要根据具体的编号来定
          3)ls/dev/snd目录下可能会没有设备,这个时候需要参考网上的建议,使用链接命令或者直接将设备拷贝到这个目录下
>重启操作系统,然后即可运行,可能程序在运行时需要使用管理员权限,不然会报错

3.待解决问题
到上述步骤为止,已经能够录音,不过还是有点问题,声音比较嘈杂,还有是单声道录音,这些可以通过amixer命令来解决,具体的可以网上查找,非常多参考资料

三、出错记录
1)情况1
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4241:(_snd_config_evaluate) functionsnd_func_card_driver returned error: No such file ordirectory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluatingstrings
ALSA lib conf.c:4241:(_snd_config_evaluate) functionsnd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluatingname
ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_referreturned error: No such file or directory
ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: No suchfile or directory
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCMdefault
error opening PCM device: No such file or directory
出错原因:①交叉编译后拷贝配置文件时没有按照对应目录
                ②没有添加环境变量,或者添加环境变量后没有执行更新命令,/etc/profile对应的更新命令为source/etc/profile
                ③没有找到声卡,如果使用USB声卡时,默认没有加载成功
2)情况2
ALSA libconf.c:3501:(snd_config_hook_load) cannot stat file/directory/usr/local/share/alsa/cards/aliases.confALSA libconf.c:3501:(snd_config_hook_load) cannot stat file/directory/usr/local/share/alsa/cards/aliases.conf
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCMcards.pcm.default
error opening PCM device: No such file or directory
出错原因:①重新交叉编译,将alsa的配置文件单独放到一个位置,不要使用默认位置
3)情况3
ALSA libpcm_hw_c(_snd_pcm_hw_open)invalid value for card
erroropening PCM device: No such file or directory
出错原因:①.asoundrc中声卡的修改绑定有错误,需要重新按照正确的方式配置
4)情况4
erroropening PCM device: No such file or directory
出错原因:程序可能需要管理员权限才能执行,将系统改为管理员权限运行或者执行sudo命令运行
5)情况5
PC下出错的原因一般只有两种,一种是没有安装好alsa,一种是在编译的时候没有添加链接库-lasound

四、参考链接:
1.alsa交叉编译
2.alsa编程
存为wav格式参考(有点小错误,仅供参考): http://blog.youkuaiyun.com/sea918/article/details/7249216
WAVE文件格式解析(当存储文件为wav格式时参考): http://www.cnblogs.com/liyiwen/archive/2010/04/19/1715715.html
一个简短的范例(有点小错误,仅供参考): http://blog.sina.com.cn/s/blog_705094cc010151pl.html
3.alsa配置相关(细节掌握)
有很多相关的查看声卡信息的命令(和系统有关,不一定都好使,选择使用) http://wiki.audacityteam.org/index.php?title=USB_mic_on_Linux
嵌入式Linux中alsamixer交叉编译与调试实战 ALSA Mixer 是 Linux 音频子系统中用于控制声卡硬件参数的核心终端工具,其本质是通过 snd_ctl 接口与内核交互的轻量级控制前端。它不处理音频流,仅管理音量、静音、输入源等 Control Elements,广泛应用于无图形界面的嵌入式设备调试与量产校准。在交叉编译场景下,alsamixer 常因 ncursesw 库路径错配、pkg-config 环境变量缺失或 libasound 版本不兼容而失败;而 Buildroot 等构建系统通过自动依赖解析、sysroot 精准注入和原子化安装 阅读详情

相关推荐

交叉编译安装alsa_lib和alsa_utils以及基本使用

交叉编译安装alsa_lib和alsa_utils以及基本使用 交叉编译alsa_lib A、环境 系统:Ubuntu16.04 64bit 交叉编译器:arm-linux-gnueabi alsa_lib库版本:alsa-lib-1.1.8.tar.bz2 (下载路径:https://www.alsa-project.org/wiki/Main_Page) B、交叉编译安装 ...

sinat_35706094的博客 3591

树莓派终端运行python 文件错误_树莓派2, python SDK运行 ./wakeup_trigger_start.sh报下面的错误...

树莓派2, 运行./enter_trigger_start.sh ,按enter能语音识别,但运行./wakeup_trigger_start.sh报下面的错误, 我已经把app/snowboy/_snowboydetect.so 替换成了snowboy树莓派2的,猜测是snowboy的so 默认音频输入不是开发板的,请开发人员帮看看该如何解决./wakeup_trigger_start.shA...

weixin_39735166的博客 1085

基于GEC6818开发板ALSA库的移植

配置命令:./configure --prefix=/usr/local/alsa --host=arm-linux \ --with-alsa-prefix=/usr/local/alsa/lib/ --with-alsa-inc-prefix=/usr/local/alsa/include --disable-alsamixer --disable-xmlto。以上就是移植的全部过程,希望对友友有所帮助!:虚拟机 --> 设置 --> 选项 --> 共享文件夹 -->开启 --> 添加。

m0_62562834的博客 1516

【VirtualBox】启动虚拟机报错:ALSA lib(声卡问题)

错误信息 ALSA lib confmisc.c:768:(parse_card) cannot find card '0' ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:...

HelloWorld 4956

alsa环境配置

一、语音识别  ---  录音与播放  ---> ALSA库 必须要移植ALSA库到开发板中 原材料: D:\wydx\13 语音识别\code\ALSA 1.交叉编译alsa-lib-1.0.22.tar.bz2 2.交叉编译alsa-utils-1.0.22.tar.bz2 交叉编译alsa-lib-1.0.22.tar.bz2 =============================...

weixin_39276619的博客 2703

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动。 DTS编写 由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容:/ { ... regulators { ... reg_3p3v: 3p3v { compatible = "regulator-fixed"

girlkoo的专栏 1万+

python中pygame.init_pygame.init()报错

pygame.init()ALSA lib confmisc.c:768:(parse_card) cannot find card '0'ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directoryALSA lib confmi...

weixin_39959794的博客 688

【iMX6q-Linux】---交叉编译 移植 ALSA1.2.2 到 ARM开发板 超详细

一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。

秋知叶i 2089

linux内核之alsa,alsa-lib及alsa-utils成功移植(原创)

准备工作alsa-lib版本:alsa-lib-1.0.23.tar.bz2alsa-util版本:alsa-utils-1.0.23.tar.bz2其他版本的alsa-lib和alsa-util不能保证正常工作arm板子:s3c2416板子上linux内核:2.6.xxpc虚拟机:arm-linux-gcc:4.4.6首先在Ubuntu上交叉、编译alsa-lib和alsa-util1.解压al...

weixin_32307021的博客 965

ALSA-Lib 与 ALSA-Utils 快速移植:正点原子 IMX93 开发板音频系统配置攻略!

移植 ALSA 库可不是照着 README 跑命令那么简单,一步错,全盘皆输。今天咱们来详细拆解一下 ALSA-Lib 和 ALSA-Utils 的移植过程,让你的 IMX93 开发板瞬间“开口说话”!

正点原子Linux工程师 704

第七章-分布式搜索引擎-ES:全文查询、分词查询、精确查询、地理坐标查询、组合查询(bool、funtion_score)以及RestApi

111

weixin_36580930的博客 1632

迅为-4418开发板移植ALSA声卡

高级Linux声音体系(Advanced Linux Sound Architecture,缩写为 ALSA)是 Linux内核中,为声卡提供的驱动组件,以替代原先的 OSS(开放声音系统)。一部分的目的是支持声卡的自动配置,以及完美的处理系统中的多个声音设备。本文介绍如何移植 ALSA到 iTOP-4418 开发板,适用于最小 Linux 系统和 qt 系统。 查看本次提供的压缩包内容,分别为指导文档,测试音乐以及源码,在 binary 文件夹中有编译好的二进制文件,供用户直接使用,如下图所示。 .

mucheni的博客 437

ESP32S3 Korvo2V3四通道AEC配置实战:基于AFE的回声消除优化

本文详细介绍了在ESP32S3 Korvo2V3平台上配置四通道AEC(回声消除)的实战经验。通过AFE算法优化和硬件连接调试,实现高质量回声消除,显著提升智能音箱和会议设备的语音交互体验。重点解析了四通道配置、数据格式对齐和参数调优等关键技术要点。

elastic6hunter的博客 935

ALSA 1.2.2 嵌入式移植实战:aarch64 交叉编译与 aplay/arecord 工具链配置

本文详细介绍了在aarch64架构的嵌入式平台上完成ALSA 1.2.2的完整移植过程,包括alsa-lib和alsa-utils的交叉编译、配置优化以及实用工具链的部署。通过环境准备、交叉编译工具链配置、alsa-lib和alsa-utils的编译与安装、目标系统部署与配置、功能验证与调试技巧等步骤,帮助开发者快速掌握嵌入式音频应用的开发技术。

weixin_33795093的博客 600

【GAN实战】基于pytorch-CycleGAN与pix2pix的自定义数据集训练全攻略

本文详细解析了基于PyTorch的CycleGAN与pix2pix模型在自定义数据集上的完整训练流程。核心在于根据数据是否成对来正确选择模型:pix2pix适用于严格配对的“孪生”数据,而CycleGAN则擅长处理非配对的“散装”数据集。文章从数据准备、配置训练到测试应用,提供了全链路实战指南与关键参数调优心得,帮助开发者高效实现图像到图像的风格转换。

x2y3z4a5b的博客 704

Balser相机的硬件触发实战:从连线到信号处理

本文详细介绍了Balser相机硬件触发的实战应用,从硬件接线、信号定义到软件配置(Pylon Viewer及API)提供了完整指南。重点阐述了如何利用外部物理电信号实现微秒级精准触发,解决工业场景下的同步与延迟问题,并分享了信号调理、抗干扰等高级实战经验。

y9z0a1b的博客 337

带音频播放的MPlayer播放器在ARM上的移植笔记

带音频播放的MPlayer播放器在ARM上的移植

hurryddd 2533

目标检测中回归损失函数(L1Loss,L2Loss,Smooth L1Loss,IOU,GIOU,DIOU,CIOU,EIOU,αIOU ,SIOU)

为了解决CIoU的问题,有学者在CIOU的基础上将纵横比拆开,提出了EIOU Loss,并且加入Focal聚焦优质的预测框,与CIoU相似的,EIoU是损失函数的解决方案,只用于训练。在错误率小的地方,梯度的值也应当小,反之在错误率大的地方,梯度也应当大,因为这时候我们需要对错误率小的情况进行微调,而错误率大的地方进行大刀阔斧的调整;如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。DIoU的作者考虑到,在两个框中心点重合时,c与d的值都不变。

zyw2002的博客 6631

嵌入式Linux音频开发:ALSA工具aplay/arecord交叉编译移植实战

在嵌入式Linux音频开发中,ALSA(Advanced Linux Sound Architecture)是处理音频输入输出的核心框架,它通过提供统一的API接口,管理底层音频硬件驱动。其工作原理基于设备文件抽象和插件系统,使得应用层可以便捷地进行音频播放与录制。这一技术对于嵌入式多媒体设备、智能硬件和物联网终端具有重要价值,能够实现高质量的实时音频处理。在实际应用场景中,开发者常需在资源受限的嵌入式平台上部署ALSA命令行工具,用于快速验证音频硬件通路和驱动功能。本文聚焦于将ALSA工具集中的aplay

weixin_30458043的博客 595

W5500以太网&PoE扩展模块原理图设计,已量产

本文将以 W5500 以太网 & PoE 扩展板为对象,从嵌入式硬件设计的视角,深度拆解其电路架构、核心器件选型、关键功能实现,以及这款板子解决行业痛点的设计思路。

不脱发的程序猿 945

基于STM32、HAL库的W25Q01JVZEIQ TR FLASH存储器驱动应用程序设计

1Gb (128MB),分为512个可擦除块(block),每个块256KB。:块擦除约30-50ms,芯片擦除约30s。:标准SPI (支持1/2/4线模式)// 初始化CS引脚为高电平。// 擦除扇区(4KB)// 初始化Flash。/* 状态寄存器位 *//* 指令定义 *//* 超时定义 *//* 函数声明 */

corlin6688的博客 267

alsa音频相关文件的移植

分类: linux2012-07-17 17:10 50人阅读 评论(0) 收藏 举报 情况简介: ALSA 是目前 Linux 系统上大量采用的音频设备库,通过 Alsa 架构能分离驱动和应用的开发。  有了 Alsa 内核驱动,我们还需要 Alsa Lib 和 Alsa Util 的支持,这 3 者的关系如下图所示: alsa-driver:alsa的驱动程序 als

kerson的专栏 4384

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

v3S驱动音频

文章目录一、buildroot 配置 alsa-lib 和 alsa-utils移植(测试不通过)1. 使能 alsa-lib2. 使能 alsa-utils二、自行配置 alsa-lib 和 alsa-utils移植(麻烦但不得不用)1. 将压缩包拷贝到ubuntu下2.alsa-lib移植3. alsa-utils移植三、声卡设置与测试1. amixer使用方法1. 查看帮助信息2.更多操作请看2.其他配置1. 查看CODEC设备2. 查看设备3. 调节音量4. 查看控制器 amixer content

lengyuefeng212的博客 3208

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

下一篇: linux 读取键盘上下左右键小程序
风过无痕11
博客等级 码龄14年 4粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值