自顶向下分析一个简单的语音识别系统(二)

上回咱们说到项目的目录以及各个文件的作用,这回我们自顶向下开始分析该项目。项目开始于tf_train_ctc.py文件。

1. 训练的开始

代码如下图所示:

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
    def main(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()函数训练模型。下面我们细细分解该类。

2.Tf_train_ctc类的组成

该类所包含的方法如下图所示:

方法名主要作用
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构建SimpleLSTM/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调用的函数

3. Tf_train_ctc类中函数调用关系

由前面可以知道Tf_train_ctc类中最主要的两个函数是init 和run_model,这两个函数通过调用该类中其他的函数分别实现模型的初始化和训练,其调用关系如下所示:

Created with Raphaël 2.1.0 开始 __init__ load_configs set_up_directories set_up_model 结束
Created with Raphaël 2.1.0 开始 run_model configuration run_training_epochs run_batches 结束

其中configuration包含以下函数:

Created with Raphaël 2.1.0 configuration setup_network_and_graph load_placeholder_into_network setup_optimizer setup_decoder setup_smmary_statistics 结束

其中run_training_epochs调用如下函数:

Created with Raphaël 2.1.0 run_training_epochs validation_and_checkpoint_check run_batches run_validation_step 结束

本回简要介绍了Tf_train_ctc内部的函数调用关系图,给出了该训练模型的骨架。下回我们结合具体代码介绍模型是如何初始化的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值