初学机器学习代码

初学机器学习代码(enrollment.py)记录的一些函数的用法~

machinelearning

1.tensorflow中定义了tf.app.flags用于接收从终端传入的命令行参数。“DEFINE_xxx“函数带3个参数,分别是变量名称,默认值,用法描述。

tf.app.flags.DEFINE_string( 'test_dir','results/TRAIN_CNN_3D/test_logs', 'Directory where checkpoints and event logs are written to.')

2.代码中所引用的hdf5文件enrollment-evaluation_sample_dataset.hdf5是用户用于注册语音,生成特定模型的文件。而development_sample_dataset_speaker.hdf5在train_softmax.py用于softmax训练。

3.parameter servers即参数服务器,是一个编程框架,用于方便分布式并行程序的编写,适用于大规模深度学习系统。

4.在主函数中,

tf.logging.set_verbosity(tf.logging.INFO): 

将 TensorFlow 日志信息输出到屏幕

tf.Group():

计算图,主要用于构建网络,本身不进行任何实际的计算。
5.

with graph.as_default()

表示将这个类实例graph,也就是新生成的图作为整个 tensorflow 运行环境的默认图,如果有多个线程,由于创建了多个默认图,就相当于有了多个图画纸了。
6.

tf.device()

指定模型运行的具体设备,可以指定运行在GPU还是CUP上,以及哪块GPU上。

7.[Select the network]
使用

nets_factory.get_network_fn()

构建一个网络。(具体见11)
8.[Create a dataset provider that loads data from the dataset]

tf.placeholder(dtype, shape=None, name=None)

作为占位符。
9.

tf.train.batch(
    tensors,# 一个列表或字典的tensor用来进行入队
    batch_size,# 设置每次从队列中获取出队数据的数量
    num_threads=1,# 用来控制入队tensors线程的数量,如果num_threads大于1,则batch操作将是非确定性的,输出的batch可能会乱序
    capacity=32,#一个整数,用来设置队列中元素的最大数量
    enqueue_many=False,# 在tensors中的tensor是否是单个样本
    shapes=None,# 可选,每个样本的shape,默认是tensors的shape
    dynamic_pad=False,# Boolean值.允许输入变量的shape,出队后会自动填补维度,来保持与batch内的shapes相同
allow_smaller_final_batch=False,# 可选,Boolean值,如果为True队列中的样本数量小于batch_size时,出队的数量会以最终遗留下来的样本进行出队,如果为Flalse,小于batch_size的样本不会做出队处理
    shared_name=None,# 可选,通过设置该参数,可以对多个会话共享队列
        name=None
)

功能:利用一个tensor的列表或字典来获取一个batch张量。

10.[specify the losss function]

l2范数用于正则化,表示向量元素的平方和再开平方,L2范数通常会被用来做优化目标函数的正则化项,防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力。
.
11.[outputs of two networks]

在nets_factory.py文件中,内部函数network_fn(images)被作为返回值输出,

model_speech_fn = nets_factory.get_network_fn(
            FLAGS.model_speech,
            num_classes=num_subjects_development,
            is_training=is_training)

得到model_speech_fn就是network_fn(images),之后传入参数model_speech_fn(batch_speech)返回值就是network_fn()的返回值。
12.

tf.reduce_mean(input_tensor,
                axis=None,
               keep_dims=False,
                name=None,
               reduction_indices=None)

用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的平均值,主要用作降维或者计算tensor(图像)的平均值。

tf.nn.softmax_cross_entropy_with_logits(logits,labels,name=None

第一个参数logits:就是神经网络最后一层的输出,如果有batch的话,它的大小就是[batchsize,num_classes],单样本的话,大小就是num_classes。第二个参数labels:实际的标签,大小同上。这个函数的返回值是一个向量。之后,求loss,则要做一步tf.reduce_mean操作,对向量求均值。

tf.equal(x,y,name=None)

逐个元素进行判断,x,y维度一致,每个元素比对过去,相等则true,否则false,得到相同维度的矩阵。

15.【evaluate the model】

tf.argmax(input,axis)

根据axis取值的不同返回每行或者每列最大值的索引。axis=0时比较每一列的元素,将每一列最大元素所在的索引记录下来,最后输出每一列最大元素所在的索引数组。axis=1的时候,将每一行最大元素所在的索引记录下来,最后返回每一行最大元素所在的索引数组。

tf.cast()

作用是执行 tensorflow 中张量数据类型转换,代码中correct_pred张量是bool类型的,转换成float32类型。再计算平均值即得到accuracy。

17.[summary section]

 tf.GraphKeys.SUMMARIES

在关系图中创建的汇总张量对象。
18.

tf.get_collection(
    key,
    scope=None
)

该函数可以用来获取key集合中的所有元素,返回一个列表。
19.

tf.Session(self, target='', graph=None, config=None)

创建一个新的Tensorflow会话。
20.

tf.summary.scalar(tags, values, collections=None, name=None)

用来显示标量信息;一般在画loss,accuary时会用到这个函数。
21.

tf.nn.zero_fraction(
    value,
name=None

将输入的Tensor中0元素在所有元素中所占的比例计算并返回,因为relu激活函数有时会大面积的将输入参数设为0,所以此函数可以有效衡量relu激活函数的有效性。
将x中的0元素所占比例返回,作为tf.summary.scalar()的value。

22.**[enrollment model] **

tf.train.latest_checkpoint()

函数的作用查找最新保存的checkpoint文件的文件名(Finds the filename of latest saved checkpoint file.)。

23.np.where(condition),返回符合条件的位置信息speaker_index = np.where(fileh.root.label_enrollment[:] == speaker_class)[0],得到符合条件的行索引。

24.最终创建了MODEL.npy文件,其中存储了说话者的模型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值