自頂向下分析乙個簡單的語音識別系統(二)

2021-07-29 23:19:40 字數 2165 閱讀 4931

上回咱們說到專案的目錄以及各個檔案的作用,這回我們自頂向下開始分析該專案。專案開始於tf_train_ctc.py檔案。

**如下圖所示:

if __name__ == '__main__':

import click

# use click to parse command line arguments

@click.command()

@click.option('--config', default='neural_network.ini', help='configuration file name')

@click.option('--name', default=none, help='model name for logging')

@click.option('--debug', type=bool, default=false,

help='use debug settings in config file')

# train rnn model using a given configuration file

defmain

(config='neural_network.ini', name=none, debug=false):

logging.basicconfig(level=logging.debug,

format='%(asctime)s [%(levelname)s] %(name)s: %(message)s')

global logger

logger = logging.getlogger(os.path.basename(__file__))

# create the tf_train_ctc class

tf_train_ctc = tf_train_ctc(

config_file=config, model_name=name, debug=debug)

# run the training

tf_train_ctc.run_model()

main()

可以看到,該段**主要初始化了tf_train_ctc這個類,然後呼叫該類的run_model()函式訓練模型。下面我們細細分解該類。

該類所包含的方法如下圖所示:

方法名主要作用

init通過neural_network.ini初始化model

load_configs

讀取neural_network.ini中的配置資訊

set_up_directories

設定session/summary資料存放目錄

set_up_model

獲得訓練所需資料以及配置

run_model

執行模型訓練相關操作

setup_network_and_graph

配置網路的輸入輸出

load_placeholder_into_network

構建******lstm/birnn網路

setup_loss_function

設定網路的ctc_loss函式

setup_optimizer

使用adamoptimizer優化

setup_decoder

配置網路輸出的decoder

setup_summary_statistics

使用tensorboard讀取訓練時的相關資訊

run_training_epochs

每次訓練迭代呼叫的函式

run_validation_step

驗證網路呼叫的函式

validation_and_checkpoint_check

設定儲存模型引數時間點以及驗證模型引數的時間點

run_batches

執行乙個batch呼叫的函式

由前面可以知道tf_train_ctc類中最主要的兩個函式是init和run_model,這兩個函式通過呼叫該類中其他的函式分別實現模型的初始化和訓練,其呼叫關係如下所示:

其中configuration包含以下函式:

其中run_training_epochs呼叫如下函式:

本回簡要介紹了tf_train_ctc內部的函式呼叫關係圖,給出了該訓練模型的骨架。下回我們結合具體**介紹模型是如何初始化的。

自頂向下分析乙個簡單的語音識別系統(十)

接著上回結束的地方,本回我們來分析sparse tuple to texts函式和ndarray to text函式。首先分析sparse tuple to texts函式。給出 如下 def sparse tuple to texts tuple indices tuple 0 values tu...

簡述自頂向下的語法分析

在我們得到了context free grammar 之後,下一步就要將它轉換成一棵語法分析樹了,語法分析樹使得我們的編譯器能夠識別輸入串是否符合我們的context free grammar 中文翻譯為上下文無關語言 有兩種方法能夠將context free grammar轉換為語法分析樹。今天我...

自頂向下的語法分析(修改)

自頂向下語法分析可以被看作是為輸入串構造語法分析樹的問題,它從語法分析樹的根結點開始 按照先序遍歷建立這棵語法分析樹的各個結點。自頂向下語法分析也可以被看作尋找輸入串的最左推導的過程。遞迴下降的語法分析 乙個遞迴下降語法分析程式由一組過程組成,每個非終結符號有乙個對應的過程。程式的執行從開始符號對應...