BP神经网络的数据分类——语音特征信号分类

      大家好,我是带我去滑雪!

      BP神经网络,也称为反向传播神经网络,是一种常用于分类和回归任务的人工神经网络(ANN)类型。它是一种前馈神经网络,通常包括输入层、一个或多个隐藏层和输出层。BP神经网络的分类任务涉及将输入数据分为不同的类别,其中每个类别由网络输出的一个节点表示。

目录

(1)BP神经网络的训练步骤

(2)语音特征识别分类

(3)模型建立

(4)数据选择与归一化

(5)BP神经网络结构初始化

(6)模型训练

(7)模型分类

(8)结果分析


(1)BP神经网络的训练步骤

      BP神经网络的训练过程包括以下几个步骤: 

  • 输入层:输入层接收原始数据,将其传递给神经网络。每个输入节点对应于数据的一个特征或属性。
  • 隐藏层:BP神经网络可以包含一个或多个隐藏层。隐藏层的目的是学习数据中的复杂模式和特征。每个隐藏层包含多个神经元,这些神经元通过权重和激活函数进行连接。
  • 输出层:输出层产生网络的最终输出,通常对应于分类的不同类别。每个输出节点表示一个类别,并输出的值通常被解释为某个样本属于该类别的概率。
  • 权重:在BP神经网络中,每个连接都有一个相关联的权重。这些权重是网络的参数,通过训练来学习。它们用于控制信号在网络中的传递和变换。
  • 激活函数:每个神经元都包含一个激活函数,用于将神经元的输入转换为输出。常见的激活函数包括Sigmoid、ReLU(Rectified Linear Unit)和Softmax函数。
  • 前向传播:前向传播是指从输入层到输出层的信息传递过程。每个神经元将其输入与相关的权重相乘,并将结果传递给激活函数。这一过程逐层进行,直到得到输出。
  • 反向传播:反向传播是BP神经网络的关键部分。它使用损失函数来度量网络输出与实际目标之间的误差。然后,通过链式法则,误差被反向传播回网络,以调整权重,减小误差。这是通过梯度下降算法实现的,以最小化损失函数。
  • 训练:训练是指通过提供大量已知的输入和目标输出数据来调整网络的权重,以使网络能够对新数据进行分类。训练通常涉及多次迭代的前向传播和反向传播过程。
  • 预测:一旦网络经过训练,它可以用来对未知数据进行分类。输入数据传递到网络中,然后网络输出表示每个类别的概率或类别标签。

(2)语音特征识别分类

        语音特征信号识别是一种技术,它涉及分析和识别从声音信号中提取出的语音特征。这些特征是声音信号中的可量化属性,有助于理解和识别说话者的身份、语言、情感、语速、音调和其他相关信息。语音特征信号识别在语音处理、语音识别、情感分析、说话者识别等领域中具有广泛的应用。

       语音识别的运算过程为:首先,将待识别语音转化为电信号后输入识别系统,经过预处理后用数学方法提取语音特征信号,提取出的语音特征信号可以看成该段语音的模式;然后,将该段语音模型同已知参考模式相比较,获得最佳匹配的参考模式为该段语音的识别结果。

        选取民歌、古筝、摇滚、流行四类不同音乐,用BP神经网络实现对这四类音乐的有效分类。每段音乐都用倒谱系数法(倒谱系数法的核心思想是将信号的频谱信息转化为倒谱域,以便更好地分析和处理信号的特征)提取500组24维语音特征信号,提出的语音特征信号。

(3)模型建立

        由于语音特征输入信号有24维,待分类的语音信号有4类,所以将BP神经网络的结构设置为24-25-4,即输入层有24个节点,隐含层有25个节点,输出层有4个节点。BP神经网络训练用训练数据训练BP神经网络,由于一共有2000组的语音特征信号,从中随机选择1500组作为训练数据训练神经网络,500组数据作为测试数据测试网络分类能力。BP神经网络再用训练好的神经网络对测试数据所属语音类别进行分类。

(4)数据选择与归一化

首先根据倒谱系数法提取四类音乐特征信号,不同的语音信号分别用1、2、3、4标识,提取的信号分别存储于data1.mat、data2.mat、data3.mat、data4.mat数据库文件中,每组数据为25维,第一维为类别标识,后24维为语音特征信号。对汇总后的数据进行归一化处理。根据语音类别标识设定每组语音信号的期望输出值,如标识类为1,期望输出向量为[1,0,0,0]。

%% 清空环境变量
clc
clear%% 训练数据预测数据提取及归一化%下载四类语音信号
load data1 c1
load data2 c2
load data3 c3
load data4 c4%四个特征信号矩阵合成一个矩阵
data(1:500,:)=c1(1:500,:);
data(501:1000,:)=c2(1:500,:);
data(1001:1500,:)=c3(1:500,:);
data(1501:2000,:)=c4(1:500,:);%从1到2000间随机排序
k=rand(1,2000);
[m,n]=sort(k);%输入输出数据
input=data(:,2:25);
output1 =data(:,1);%把输出从1维变成4维
output=zeros(2000,4);
for i=1:2000switch output1(i)case 1output(i,:)=[1 0 0 0];case 2output(i,:)=[0 1 0 0];case 3output(i,:)=[0 0 1 0];case 4output(i,:)=[0 0 0 1];end
end%随机提取1500个样本为训练样本,500个样本为预测样本
input_train=input(n(1:1500),:)';
output_train=output(n(1:1500),:)';
input_test=input(n(1501:2000),:)';
output_test=output(n(1501:2000),:)';%输入数据归一化
[inputn,inputps]=mapminmax(input_train);

(5)BP神经网络结构初始化

根据语音特征信号的特点确定BP神经网络的结构为24-25-4,随机初始化BP神经网络权值和阈值。

innum=24;
midnum=25;
outnum=4;%权值初始化
w1=rands(midnum,innum);
b1=rands(midnum,1);
w2=rands(midnum,outnum);
b2=rands(outnum,1);w2_1=w2;w2_2=w2_1;
w1_1=w1;w1_2=w1_1;
b1_1=b1;b1_2=b1_1;
b2_1=b2;b2_2=b2_1;%学习率
xite=0.1;
alfa=0.01;
loopNumber=10;
I=zeros(1,midnum);
Iout=zeros(1,midnum);
FI=zeros(1,midnum);
dw1=zeros(innum,midnum);
db1=zeros(1,midnum);

(6)模型训练

      使用训练数据训练模型,在训练过程中根据网络预测误差调整网络的权值和阈值。

E=zeros(1,loopNumber);
for ii=1:10E(ii)=0;for i=1:1:1500%% 网络预测输出 x=inputn(:,i);% 隐含层输出for j=1:1:midnumI(j)=inputn(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));end% 输出层输出yn=w2'*Iout'+b2;%% 权值阀值修正%计算误差e=output_train(:,i)-yn;     E(ii)=E(ii)+sum(abs(e));%计算权值变化率dw2=e*Iout;db2=e';for j=1:1:midnumS=1/(1+exp(-I(j)));FI(j)=S*(1-S);end      for k=1:1:innumfor j=1:1:midnumdw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));endendw1=w1_1+xite*dw1'+alfa*(w1_1-w1_2);b1=b1_1+xite*db1'+alfa*(b1_1-b1_2);w2=w2_1+xite*dw2'+alfa*(w2_1-w2_2);b2=b2_1+xite*db2'+alfa*(b2_1-b2_2);w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;b1_2=b1_1;b1_1=b1;b2_2=b2_1;b2_1=b2;end
end

(7)模型分类

       使用已经训练后的BP神经网络模型分类语音特征信号,根据分类结果分析BP神经网络的分类能力。

output_fore=zeros(1,500);
for i=1:500output_fore(i)=find(fore(:,i)==max(fore(:,i)));
end%BP网络预测误差
error=output_fore-output1(n(1501:2000))';%画出预测语音种类和实际语音种类的分类图
figure(1)
plot(output_fore,'r')
hold on
plot(output1(n(1501:2000))','b')
legend('预测语音类别','实际语音类别')%画出误差图
figure(2)
plot(error)
title('BP网络分类误差','fontsize',12)
xlabel('语音信号','fontsize',12)
ylabel('分类误差','fontsize',12)%print -dtiff -r600 1-4k=zeros(1,4);  
%找出判断错误的分类属于哪一类
for i=1:500if error(i)~=0[b,c]=max(output_test(:,i));switch ccase 1 k(1)=k(1)+1;case 2 k(2)=k(2)+1;case 3 k(3)=k(3)+1;case 4 k(4)=k(4)+1;endend
end%找出每类的个体和
kk=zeros(1,4);
for i=1:500[b,c]=max(output_test(:,i));switch ccase 1kk(1)=kk(1)+1;case 2kk(2)=kk(2)+1;case 3kk(3)=kk(3)+1;case 4kk(4)=kk(4)+1;end
end%正确率
rightridio=(kk-k)./kk;

(8)结果分析

        BP神经网络分类误差如下图所示。

         BP神经网络的分类正确率为:

语音信号识别第一类第二类第三类第四类
正确率0.804910.87020.8984

        通过分类结果的准确率可以发现,基于BP神经网络的语音信号分类算法具有较高的准确性,能够准确识别出语音信号所属类别。 


更多优质内容持续发布中,请移步主页查看。

   点赞+关注,下次不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于iOS:如何使用SwiftUI调整图片大小?

How to resize Image with SwiftUI? 我在Assets.xcassets中拥有很大的形象。 如何使用SwiftUI调整图像大小以缩小图像? 我试图设置框架,但不起作用: 1 2 Image(room.thumbnailImage) .frame(width: 32.0, height: 32.0) 在Image上应用…

浅析刚入门Python初学者的注意事项

文章目录 一、注意你的Python版本1.print()函数2.raw_input()与input()3.比较符号&#xff0c;使用!替换<>4.repr函数5.exec()函数 二、新手常遇到的问题1、如何写多行程序&#xff1f;2、如何执行.py文件&#xff1f;3、and&#xff0c;or&#xff0c;not4、True和False…

Unity项目转微信小游戏保姆教程,繁杂问题解决,及微信小游戏平台简单性能测试

前言 借着某人需求&#xff0c;做了一波简单的技术调研&#xff1a;将Unity项目转换为微信小游戏。 本文主要内容&#xff1a;Unity转换小游戏的步骤&#xff0c;遇到问题的解决方法&#xff0c;以及简单的性能测试对比 微信小游戏的限制 微信小游戏对程序包体大小有严格限制…

Manopt使用

本文记录一些黎曼流型的优化工具箱的使用 入手 安装 https://www.manopt.org/tutorial.html#gettingstarted

飞桨平台搭建PP-YOLOE模型

一、创建项目 此博客仅是运行PP-YOLOE源码&#xff0c;这里以变压器渗漏数据集为例COCO数据集太大了&#xff0c;跑不动&#xff0c;V100训练预估计得7天左右&#xff0c;即便是A100也得4天半&#xff0c;变压器渗漏油数据集跑一个小时左右&#xff0c;还可以接受&#xff0c;…

公司团建小游戏开发小程序游戏互动小游戏

在现代工作环境中&#xff0c;团队合作和员工士气是取得成功的关键因素。为了增强团队合作、提升员工士气&#xff0c;并促进员工之间的互动&#xff0c;公司团建小游戏成为了一种备受欢迎的方式。本文将探讨如何开发公司团建小游戏&#xff0c;以达到这些目标。 1. 游戏概念 …

京东数据分析(京东销量):2023年9月京东投影机行业品牌销售排行榜

鲸参谋监测的京东平台9月份投影机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据数据显示&#xff0c;9月份&#xff0c;京东平台投影机的销量为13万&#xff0c;环比下滑约17%&#xff0c;同比下滑约25%&#xff1b;销售额将近2.6亿&#xff0c;环比下…

JVM虚拟机:如何查看自己的JVM默认的垃圾回收器

只需要在程序运行的时候指定下面的参数就可以看到当前自己的JVM默认的垃圾回收器是什么&#xff1f;如下所示&#xff1a; 如上所示&#xff0c;默认使用的是G1回收器&#xff0c;这是我的电脑&#xff0c;因为我的电脑安装jdk的版本是1.9 如果你的jdk的版本是1.8&#xff0c;那…

HTML和CSS入门学习

目录 一.HTML 二.CSS 1.CSS作用&#xff1a;美化页面 2.CSS语法 【1】CSS语法规范 【2】如何插入样式表 3.CSS选择器 4.CSS设置样式属性--设置html各种标签的属性 【1】文本属性--设置整段文字的样式 【2】字体属性--设置单个字的样式 【3】链接属性--设置链接的样式…

优思学院|APQP(先期产品质量规划)简介

在汽车行业&#xff0c;APQP Advanced Product Quality Planning&#xff08;先期产品质量规划&#xff09;&#xff0c;是一种常用的质量规划指南和工具&#xff0c;但它同样适用于其他行业。APQP是汽车国际行动组织&#xff08;AIAG&#xff09;提出的一种方法&#xff0c;用…

Bash 4关联数组:错误“声明:-A:无效选项”

Bash 4 associative arrays: error “declare: -A: invalid option” 就是bash版本太低 1.先确定现在的版本 bash -version 我的就是版本太低 升级新版本bash4.2 即可 升级步骤 1.下载bash-4.2wget http://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz 2. 下载完成解压 tar -zxvf…

10年测试经验分享:新手如何找到适合自己的软件测试项目?

每一个测试新手&#xff08;特别是自学测试的人&#xff09;来说&#xff0c;往往不知道到哪里去找项目练手&#xff0c;这应该是最大的困扰了。 实话讲&#xff0c;这个目前没有非常好的、直接的解决办法&#xff0c;不过在这我可以结合我自己之前的一些工作经历&#xff0c;…

mysql简单备份和恢复

版本&#xff1a;mysql8.0 官方文档 &#xff1a;MySQL :: MySQL 8.0 Reference Manual :: 7 Backup and Recovery 1.物理备份恢复 物理备份是以数据文件形式备份。这种方式效率高点&#xff0c;适合大型数据库备份。物理备份可冷备可热备。 使用mysqlbackup 命令进行物理备…

CATIA环境编辑器用不了时创建项目快捷方式

CATIA环境编辑器用不了时创建项目快捷方式 一、参考适用情况示例二、 解决步骤(一) 先正确放置winb_64部署包(二) 添加环境文件(三) 修改加入的环境文件(四) 复制本机CATIA快捷方式后重命名(五) 修改快捷方式目标的值 一、参考适用情况示例 二、 解决步骤 (一) 先正确放置winb…

LeetCode-20-有效的括号

1.我的暴力解法 class Solution {public boolean isValid(String s) {Stack<Character> stknew Stack<Character>();int i0;//奇数直接不可能是匹配的if(s.length()%2!0)return false;for (;i<s.length();i){if(s.charAt(i)(){stk.push(();}else if(s.charAt(i…

【Spring】@Component组件

大前提&#xff1a; 添加了相关的约束文件以及注解支持 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:…

20231106-前端学习加载和视频球特效

加载效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>加载效果</title><!-- 最新…

虚拟数字人引领企业创新浪潮

在人工智能和计算机图形学快速发展的今天&#xff0c;虚拟数字人正逐渐成为企业形象展示的新趋势。作为一种融合了多种技术的数字化形象&#xff0c;虚拟数字人具有逼真的外观、情感表达和思维逻辑&#xff0c;能够与人类进行自然、流畅的互动&#xff0c;为企业提供全天候、个…

uniApp获取当前位置经纬度

以下是使用uni.getLocation获取当前位置的示例代码&#xff1a; 调用uni.getLocation方法获取当前位置信息 uni.getLocation({type: wgs84, // 坐标类型&#xff0c;默认为wgs84&#xff0c;可选的值为gcj02和bd09llsuccess: res > {// 获取成功&#xff0c;经度和纬度在r…

本地电脑部署piwigo如何公网访问,轻松分享照片?

通过cpolar分享本地电脑上有趣的照片&#xff1a;部署piwigo网页 文章目录 通过cpolar分享本地电脑上有趣的照片&#xff1a;部署piwigo网页前言1.Piwigo2. 使用phpstudy网页运行3. 创建网站4. 开始安装Piwogo5. 设定一条内网穿透数据隧道6. 与piwigo网站绑定7. 在创建隧道界面…