在做深度学习时候很多小白会遇到环境得问题下面我们 给出一个基于cpu得 python 3.6得环境
包含 tensorflow Keras torch torchvision
2023年2月5号 基于 python3.6配置环境成功:
torch torchvision 使用这个 :
pip install torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html 成功
pip install transformers==4.13.0 -i https://pypi.tuna.tsinghua.edu.cn/simple 成功
pip install --upgrade nni --ignore-installed -i https://pypi.tuna.tsinghua.edu.cn/simple 成功
tensorflow Keras 使用:
pip install tensorflow==1.15.0 keras==2.3.1 h5py==2.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
如果有问题一直下载不下来:
首先是 开源的网址:
Original: https://blog.csdn.net/qq_38735017/article/details/121321372
Author: 甜辣uu
Title: bert_wwm_ext_pytorch +keras+tensorflow 版本搭配
相关阅读1
Title: 探究torchAudio中wav2vec2的源码(一)
由于上一篇博客,我把torchAudio中的wav2vec2样例加上自己理解发了出来,这次我们就来看看torchaudio中,wav2vec2.0的模型是怎么创建的。
博主也在边写博客边看这源码学习,理解得不一定对,有错希望大佬指出~
观前提示:
- 由于直接打开torchaudio项目,没导环境,因此会有红线,并不是代码问题。
- 上一篇博客的地址:https://blog.csdn.net/weixin_43142450/article/details/123831419?spm=1001.2014.3001.5502
pipelines
首先我们看回这个样例的一行和创建模型很相关的代码。
bundle = torchaudio.pipelines.WAV2VEC2_ASR_BASE_960H
我在理解中,这句话就等于创建一个wav2vec2语音识别的模型工厂了。我们看看里面是什么。
可以看到引用的bundle在pipelines初始化文件中。
这个文件主要引用了文件夹_wav2vec2中的文件impl.py的数据类。
可以看出 WAV2VEC2_ASR_960H
等于创建了一个 Wav2Vec2ASRBundle
数据类。这个数据类里的数据,看着就是特征提取和分类的模型构造参数。然后还有最终的字母标签获取 _labels
和采样率设置 _sample_rate
。
我们继续递归,看看这个 Wav2Vec2ASRBundle
数据类的结构:
就这点东西。 Wav2Vec2ASRBundle
数据类继承了 Wav2Vec2Bundle
数据类。然后自己新增了标签属性 _labels
,和一个不知什么东西的位置 _remove_aux_axis
。里面还定义了get_labels方法和_get_state_dict方法
然后我们再看看被 Wav2Vec2ASRBundle
类继承的 Wav2Vec2Bundle
类是什么:
里面有模型路径 _path
、模型参数 _param
、采样率 _sample_rate
,以及获取采样率的方法sample_rate、获取状态字典方法_get_state_dict、获取模型方法get_model。
(博主表示不知道状态字典的作用是什么,后面看到了再进行修改,或者有大佬指点也可以,感谢)
在我写了样例博客的单元块三中有一行代码,如是写道:
model = bundle.get_model().to(device)
可以看出,他就是调用了 Wav2Vec2Bundle
类中的get_model方法。通过get_model方法能直接建立好我们的wav2vec2模型。因此,我们仔细看看get_model方法的代码。
我们点进wav2vec2_model方法看看
models
它跳到了models文件夹中的model.py文件。
我们发现传参就是我们的模型结构参数。
然后做了特征提取工作 feature_extractor
和预训练transformer模型创建工作 encoder
,以及下面的线性转换 aux
。最后返回一个Wav2Vec2Models回去。
而aux_num_out代表什么,博主不知道,博主表示压根不知道aux代表什么东西。因此希望各位好学者推测推测或者大牛给个答案?
今天就先水到这了,明天再接着看。
Original: https://blog.csdn.net/weixin_43142450/article/details/123859807
Author: Squid _
Title: 探究torchAudio中wav2vec2的源码(一)
相关阅读2
Title: TENSORFLOW PROCESS FINISHED WITH EXIT CODE -1073741819 (0XC0000005)
这次报错与是否gpu没有关系:
TENSORFLOW 导入失败:PROCESS FINISHED WITH EXIT CODE -1073741819 (0XC0000005)
测试脚本:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
这个异常,我的解决方法是,tf2.0一下版本,只支持cuda10.0。
重新安装cuda10.0,tf1.15.0版本,后来这个问题就解决了。
预训练下面有个:checkpoint文件,
checkpoint
model_checkpoint_path: "snap-43001"
all_model_checkpoint_paths: "snap-33501"
all_model_checkpoint_paths: "snap-35501"
all_model_checkpoint_paths: "snap-37001"
all_model_checkpoint_paths: "snap-43001"
实际上 最终模型是snap-37001
改一下checkpoint
model_checkpoint_path: "snap-37001"
all_model_checkpoint_paths: "snap-29001"
all_model_checkpoint_paths: "snap-33501"
all_model_checkpoint_paths: "snap-35501"
all_model_checkpoint_paths: "snap-37001"
ok,然后加载预训练ok!
加载预训练方法1:
tf 1.15版本以前加载预训练:
saver.restore(sess, restore_snap)
tf1.15版本:
aaa = tf.train.latest_checkpoint(restore_snap)
#saver.restore(sess, restore_snap)
print("start restore------------------", restore_snap,aaa)
self.saver.restore(self.sess, aaa)
print("Model restored from " + restore_snap)
加载预训练方法2:
参考:https://blog.csdn.net/wjc1182511338/article/details/82111790
def build_graph():
w1 = tf.Variable([1,3,10,15],name='W1',dtype=tf.float32)
w2 = tf.Variable([3,4,2,18],name='W2',dtype=tf.float32)
w3 = tf.placeholder(shape=[4],dtype=tf.float32,name='W3')
w4 = tf.Variable([100,100,100,100],dtype=tf.float32,name='W4')
add = tf.add(w1,w2,name='add')
add1 = tf.add(add,w3,name='add1')
return w3,add1
with tf.Session() as sess:
ckpt_state = tf.train.get_checkpoint_state('./temp/')
if ckpt_state:
w3,add1=build_graph()
saver = tf.train.Saver()
saver.restore(sess, ckpt_state.model_checkpoint_path)
else:
w3,add1=build_graph()
init_op = tf.group(tf.global_variables_initializer(),tf.local_variables_initializer())
sess.run(init_op)
saver = tf.train.Saver()
a = sess.run(add1,feed_dict={
w3:[1,2,3,4]
})
print(a)
saver.save(sess,'./temp/model')
Original: https://blog.csdn.net/jacke121/article/details/119056903
Author: AI视觉网奇
Title: TENSORFLOW PROCESS FINISHED WITH EXIT CODE -1073741819 (0XC0000005)
相关阅读3
Title: 用 kaldi 和 CVTE开源模型 实现语音识别
用 kaldi 和 CVTE开源模型 实现语音识别
文章目录
下载模型
CVTE开源了kaldi的中文模型,
模型下载地址: http://kaldi-asr.org/models/0002_cvte_chain_model.tar.gz
解压放到kaldi/egs/下
使用
将 egs/wsj/s5
中的steps和utils拷贝到 egs/cvte/s5
目录下:
将 egs/hkust/s5/local/score.sh
拷贝到 egs/cvte/s5/local
目录下:
cp -r egs/wsj/s5/steps egs/cvte/s5/steps
cp -r egs/wsj/s5/utils egs/cvte/s5/utils
cp egs/hkust/s5/local/score.sh egs/cvte/s5/local
注释掉utils/lang/check_phones_compatible.sh中if语句中的exit 1:
36
37 if [ ! -f $table_first ]; then
38 if [ ! -f $table_second ]; then
39 echo "$0: Error! Both of the two phones-symbol tables are absent."
40 echo "Please check your command"
41
42 else
43
44
45 exit 0;
46 fi
然后执行 ./run.sh
就可以了
测试自己的数据集
准备文件
0. 音频文件
要求是16-bit位深,采样率16000Hz,单声道,wav格式的语言文件
1. wav.scp
; wav.scp 格式
音频id 音频位置
如下:
AUDIO_20211129_170900_0000 ./audio/2021_11_29_17.09.00_0000.wav
AUDIO_20211129_170901_0000 ./audio/2021_11_29_17.09.01_0000.wav
AUDIO_20211129_170902_0000 ./audio/2021_11_29_17.09.02_0000.wav
AUDIO_20211129_170903_0000 ./audio/2021_11_29_17.09.03_0000.wav
AUDIO_20211129_170904_0000 ./audio/2021_11_29_17.09.04_0000.wav
AUDIO_20211129_170905_0000 ./audio/2021_11_29_17.09.05_0000.wav
AUDIO_20211129_170906_0000 ./audio/2021_11_29_17.09.06_0000.wav
AUDIO_20211129_170907_0000 ./audio/2021_11_29_17.09.07_0000.wav
AUDIO_20211129_170908_0000 ./audio/2021_11_29_17.09.08_0000.wav
AUDIO_20211129_170909_0000 ./audio/2021_11_29_17.09.09_0000.wav
AUDIO_20211129_170910_0000 ./audio/2021_11_29_17.09.10_0000.wav
AUDIO_20211129_170911_0000 ./audio/2021_11_29_17.09.11_0000.wav
AUDIO_20211129_170912_0000 ./audio/2021_11_29_17.09.12_0000.wav
AUDIO_20211129_170913_0000 ./audio/2021_11_29_17.09.13_0000.wav
AUDIO_20211129_170914_0000 ./audio/2021_11_29_17.09.14_0000.wav
2. utt2spk
音频ID
说话人ID
音频ID最好含有说话人ID
由于本例没有说话人,所以用音频ID代替说话人,即每条音频都是一个独立的说话人
utt2spk 格式
音频ID1 说话人1
音频ID2 说话人2
如下:
AUDIO_20211129_170900_0000 AUDIO_20211129_170900_0000
AUDIO_20211129_170901_0000 AUDIO_20211129_170901_0000
AUDIO_20211129_170902_0000 AUDIO_20211129_170902_0000
AUDIO_20211129_170903_0000 AUDIO_20211129_170903_0000
AUDIO_20211129_170904_0000 AUDIO_20211129_170904_0000
AUDIO_20211129_170905_0000 AUDIO_20211129_170905_0000
AUDIO_20211129_170906_0000 AUDIO_20211129_170906_0000
AUDIO_20211129_170907_0000 AUDIO_20211129_170907_0000
AUDIO_20211129_170908_0000 AUDIO_20211129_170908_0000
AUDIO_20211129_170909_0000 AUDIO_20211129_170909_0000
AUDIO_20211129_170910_0000 AUDIO_20211129_170910_0000
AUDIO_20211129_170911_0000 AUDIO_20211129_170911_0000
AUDIO_20211129_170912_0000 AUDIO_20211129_170912_0000
AUDIO_20211129_170913_0000 AUDIO_20211129_170913_0000
AUDIO_20211129_170914_0000 AUDIO_20211129_170914_0000
3. spk2utt
spk2utt 格式
说话人1 音频 音频 音频
说话人2 音频 音频 音频
有几个说话人就是几行,中间用空格隔开
如下:
AUDIO_20211129_170900_0000 AUDIO_20211129_170900_0000
AUDIO_20211129_170901_0000 AUDIO_20211129_170901_0000
AUDIO_20211129_170902_0000 AUDIO_20211129_170902_0000
AUDIO_20211129_170903_0000 AUDIO_20211129_170903_0000
AUDIO_20211129_170904_0000 AUDIO_20211129_170904_0000
AUDIO_20211129_170905_0000 AUDIO_20211129_170905_0000
AUDIO_20211129_170906_0000 AUDIO_20211129_170906_0000
AUDIO_20211129_170907_0000 AUDIO_20211129_170907_0000
AUDIO_20211129_170908_0000 AUDIO_20211129_170908_0000
AUDIO_20211129_170909_0000 AUDIO_20211129_170909_0000
AUDIO_20211129_170910_0000 AUDIO_20211129_170910_0000
AUDIO_20211129_170911_0000 AUDIO_20211129_170911_0000
AUDIO_20211129_170912_0000 AUDIO_20211129_170912_0000
AUDIO_20211129_170913_0000 AUDIO_20211129_170913_0000
AUDIO_20211129_170914_0000 AUDIO_20211129_170914_0000
测试:
替换data/fbank/test/ 下同名文件在 执行 ./run.sh
就可以了
可见 准确率还是比较高的
Original: https://blog.csdn.net/liang_baikai/article/details/121768987
Author: 凉_白开
Title: 用 kaldi 和 CVTE开源模型 实现语音识别