- 博客(16)
- 资源 (13)
- 收藏
- 关注
原创 windows下绿色命令行Android studio环境搭建
进入android工程目录,找到gradle\wrapper\gradle-wrapper.properties,把distributionUrl这一行定义的gradle改为本地的gradle。sdk子目录下有一个platforms目录,里面存放的是android的不同版本的sdk,例如android-29,android-31...等等。在f:\android-dev目录下再建一个子目录gradle,用于存放需要的不同版本的gradle。另外,编译时也经常要去下载组件什么的,可能也会卡住。
2024-08-09 21:15:27
450
原创 3. 实战数字音频处理——HIFI DSP 的定点FFT/IFFT以及加窗和OLA操作实践2
从mic处收到的语音是连续的模拟信号,经过放大和AD采样之后,变成16bit位宽的连续的数字信号。而我们在处理数据的时候是按照固定长度来处理的,一方面便于设计算法,另一方面也是处理流程的要求。窗的类型有hamming窗,hanning窗等,加窗的主要目的一是为了降低频谱的泄露,二是为了保证信号的连续性。返回nshift表示Spec表示的频谱数据要右移nshift才是真正的值,相当于输出的频谱Spec中的数据被放大了2^nshift倍,提高了后续的计算精度。在这里,我们进行了一个简单的变化,把幅度变为一半。
2024-08-09 19:04:58
1000
原创 2. 实战数字音频处理——HIFI DSP 的定点FFT/IFFT以及加窗和OLA操作实践1
我们的工程是基于makefile命令行编译的,所以你只要在compile标签下执行xt-make all命令即可。这一步涉及到时域信号的分帧,加窗,短时傅里叶变换(stft)等。然后运行一个批处理,“一键开发dsp.bat”,就会出现三个dos标签,分别是debug(调试),load(加载),compile(编译)然后经过一系列的频域信号处理,最后经过短时傅里叶逆变换(istft),加窗,OLA操作,最终恢复成时域信号。首先熟悉一下开发板,这是一个typec接口的小白盒,用typec线连接到电脑就可以了。
2024-08-09 15:25:46
1481
原创 玩转pytorch和tensorflow之(7)——实战(2) pytorch训练MNIST网络,tensorflow预测
到这里,第一步完成了,得到了pytorch训练的网络。接下来,我们用这个网络的参数,输入到构造相同的tensorflow网络,并做预测。这些都是numpy的数据格式,需要转换为pytorch的tensor。需要注意的是,标签必须要转换为long型的tensor。最后,我们调用tensoflow的网络进行预测(网络结构请参考上一篇《数据集需要转换为pytorch的格式。这里只涉及到dense层,方法以及原理参考我的博文《有了数据集,接下来定义网络结构,并开始训练。》中用到的本地数据集mnist.npz。
2024-08-09 11:17:08
588
原创 玩转pytorch和tensorflow之(6) ——实战(1) tensorflow训练MNIST网络,pytorch预测
这里只涉及到dense层,方法以及原理参考我的博文《https://blog.youkuaiyun.com/geastwind1/article/details/140993640》一共训练10个epoch,采用’adam’作为优化器,loss函数用‘sparse_categorical_crossentropy’,用于多分类问题。可见预测结果为数字’3’,结果正确,与tensoflow下预测结果完全一致。这是一个非常简单的网络,有参数的只有3个dense层。保存的参数模型后面参数转换需要使用。
2024-08-09 09:28:46
399
原创 1. 实战数字音频处理——引子 认识Xtensa HIFI DSP
例如我现在用的这一个DSP平台,50元上下就可以得到,而且不需要额外的加载器和调试器,一个火柴盒大小的设备,连接上电脑就可以使用,非常方便,用python完成加载和调试。有需要的可以私信我。DSP处理器是采用哈佛总线结构,代码总线和数据总线分开,有的DSP处理器为了增加数据流量,数据的Load(可以理解为读)和Save(可以理解为写)也是分开的,甚至有多条Load/Save总线。DSP一般都是定点的,例如我们会见到q31_t,q15_t,q7_t等数据类型定义,对应Q31,Q15,Q7的定点数据类型。
2024-08-08 13:14:50
1606
2
原创 玩转pytorch和tensorflow之(5)——全连接层
全连接层在tensorflow中是叫Dense层,在pytorch中叫线性层(Linear),全连接层可以将输入特征与每个神经元之间的连接权重进行线性运算:矩阵乘法和偏置加法操作,得到最终输出结果,它确确实实是一个线性单元。Dense(units=8)的weight形状是(4,8),bias形状是(8,)注意Dense不需要定义输入的通道,它自己会根据输入的形状定义获取输入的通道。假定输入的通道数目是4,输出的通道数目是8,输入的形状是(1,5,6,4)。好了,全连接层的转换已经完成,你自己去试试看吧。
2024-08-08 08:36:24
548
原创 玩转pytorch和tensorflow之(2)——conv2d
tensorflow的'valid'表示不padding,对应pytorch是(0,0),'same'表示输出形状和输入保持一致,pytorch需要根据输出输入的维度变化公式计算padding的数值。例如对于(2,3)的卷积核,输入4通道输出8通道,则weight权重的形状是(2,3,4,8)而同样的配置下,pytorch的weight权重的形状是(8,4,2,3)transpose(0,3,1,2),输出再转置回来,保持和tensorflow是一样的。permute(2,3,1,0),bias是一样的。
2024-08-08 08:11:43
550
原创 玩转pytorch和tensorflow之(4)——GRU
而pytorch的GRU则有weight_ih_l0,weight_hh_l0,bias_ih_l0,bias_hh_l0这4组参数。你需要把kernel,recurrent_kernel,bias转换到weight_ih_l0,weight_hh_l0,bias_ih_l0,bias_hh_l0上去。OK,你已经有了一个GRU模块,tensorflow下训练的,现在你想用训练好的GRU模型的参数在pytorch环境中来做推理。3)由bias_ih_l0,bias_hh_l0得到bias。
2024-08-08 07:06:41
753
原创 玩转pytorch和tensorflow之(3)——layernorm
与 BatchNormalization不同的是,LayerNormalization 是在指定的特征维度上进行归一化的,而BatchNormalization是在数据批次维度上进行归一化的。torch的LayerNorm转tensorflow的LayerNormalization,过程和上面类似,torch中的weight参数和bias参数需要做reshape才能给到tensorflow。注意有一个reshape。模型的输入维度定义:[1,2,3,4],最后两维是[3,4],将会对这两个维度归一化。
2024-08-07 21:56:58
485
原创 windows下用ConEmu启动分组命令行
假如你建立了一个目录叫做work2024,里面有一个proj的子目录是你的工程所在位置,把这个批处理文件丢在work2024目录下面,运行起来之后,会自动生成上述的三个dos界面,分别用于调试,加载和编译。它是一款多文档界面的dos窗口,就是说,虽然只有一个GUI界面,但是可以通过选择不同的标签激活需要的页面,实现多个dos命令窗口的切换。命令行工具以其高效,简洁,方便,是许多事务的必选操作工具,例如命令行编译,命令行加载程序,命令行调试等。-Title 定义显示在标题栏中的内容,例如这里是一键下载。
2024-08-06 20:00:17
496
原创 用makefile作为神经网络训练/推理的入口
假如你有一个神经网络需要训练,假设名叫basenet,然后需要训练不同的参数下的版本,比较性能上的差异,于是可以在basenet中放置网络的定义,训练脚本train.py,推理脚本infer.py,还有其它需要的脚本...,然后建立和basenet平行的目录,例如basenet-1,basenet-2,...这些目录只需要放一个makefile以及训练参数的定义config.py,他们之间只有config.py有差异。进入到basenet的上一层,我这里是makefile-train,输入命令即可。
2024-08-06 19:26:59
330
原创 玩转pytorch和tensorflow之(1)——batchnorm
pytorch的BatchNorm2d需要把归一化的维度放到C所在的维度,对应维度索引[0,1,2,3]中的1,所以做了一个转置,输入的形状变为BWCH,把需要归一化的维度调到1。输入的形状为[1,2,3,4],BatchNormalization中的epislon参数对应BatchNorm2d 的eps参数,这里取1e-5。输入的形状为[1,2,3,4],BatchNormalization中的epislon参数对应BatchNorm2d 的eps参数,这里取1e-5。
2024-08-03 21:49:52
384
原创 彩色化输出你的print——用loguru替换print
loguru是一款日志记录工具,可以把日志用彩色的方式输出到控制台终端,也可以同时输出到文件中。和print接口用法完全一致,支持可变参数,可以直接替换print,同时可以用颜色突出重点,同时输出时间戳和打印语句所在的位置。在python中我们经常要用print输出一些打印信息,一旦打印信息过多,由于信息没有颜色标记,重点不够突出,想要关闭也不容易找到位置。然后找到loguru安装的目录,一般是在python环境的Lib\site-packages\loguru目录。2.修改下面几个函数,用于彩色输出。
2024-08-03 20:03:25
682
1
原创 用vs studio编译一个c python 模块
这个helloworld模块只定义了一个接口,外部的名字是helloworld.hello,内部实现的函数是helloword(PyObject* self, PyObject* Py_UNUSED(args));这里模块名称是'helloworld',这里源文件只有一个:'src/helloworld.c'。下载后展开到webrtcvad-2.0.10目录,到该目录运行python setup.py build install即可编译并安装。最后,我们可以编译复杂的模块,例如webrtcvad等。
2024-08-03 19:09:58
522
原创 windows下搭建python的C模块的visual studio编译器
如果你安装的虚拟python目录是X:\virtual_python\Python38_msvc,那么就是X:\virtual_python\Python38_msvc\Lib\site-packages\setuptools\_distutils\_msvccompiler.py和X:\virtual_python\Python38_msvc\Lib\site-packages\setuptools\msvc.py。重申一下,想要省心省力的话,编译器可以用免安装的。这一句注释掉,改成了。
2024-08-02 13:23:08
746
Sandboxie-5.06-portable.zip
2020-07-10
GE 安卓照度计-视力保护助手
2013-08-28
cdependancy.exe
2014-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人