bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

人工智能66

在做深度学习时候很多小白会遇到环境得问题下面我们 给出一个基于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

如果有问题一直下载不下来:

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

首先是 开源的网址:

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的模型是怎么创建的。

博主也在边写博客边看这源码学习,理解得不一定对,有错希望大佬指出~

观前提示:

  1. 由于直接打开torchaudio项目,没导环境,因此会有红线,并不是代码问题。
  2. 上一篇博客的地址:https://blog.csdn.net/weixin_43142450/article/details/123831419?spm=1001.2014.3001.5502

pipelines

首先我们看回这个样例的一行和创建模型很相关的代码。

bundle = torchaudio.pipelines.WAV2VEC2_ASR_BASE_960H

我在理解中,这句话就等于创建一个wav2vec2语音识别的模型工厂了。我们看看里面是什么。

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

可以看到引用的bundle在pipelines初始化文件中。

这个文件主要引用了文件夹_wav2vec2中的文件impl.py的数据类。

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

可以看出 WAV2VEC2_ASR_960H 等于创建了一个 Wav2Vec2ASRBundle数据类。这个数据类里的数据,看着就是特征提取和分类的模型构造参数。然后还有最终的字母标签获取 _labels和采样率设置 _sample_rate

我们继续递归,看看这个 Wav2Vec2ASRBundle数据类的结构:

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

就这点东西。 Wav2Vec2ASRBundle数据类继承了 Wav2Vec2Bundle数据类。然后自己新增了标签属性 _labels,和一个不知什么东西的位置 _remove_aux_axis。里面还定义了get_labels方法和_get_state_dict方法

然后我们再看看被 Wav2Vec2ASRBundle类继承的 Wav2Vec2Bundle类是什么:

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

里面有模型路径 _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方法的代码。

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

我们点进wav2vec2_model方法看看

models

它跳到了models文件夹中的model.py文件。

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

我们发现传参就是我们的模型结构参数。

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

然后做了特征提取工作 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

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

改一下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

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配

; 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就可以了

bert_wwm_ext_pytorch +keras+tensorflow 版本搭配
可见 准确率还是比较高的

Original: https://blog.csdn.net/liang_baikai/article/details/121768987
Author: 凉_白开
Title: 用 kaldi 和 CVTE开源模型 实现语音识别