tf.contrib.training.train的使用


源码: https://github.com/tensorflow/tensorflow/blob/r1.4/tensorflow/contrib/training/python/training/training.py

1.作用

  • 简化使用tensorflow进行训练的过程,减少代码
  • 训练过程进行高度封装
  • 缺点:有点难理解
  • 优点:高度集成,理解后很方便使用,可以很快搭建训练训练,不用一层一层写if

包含各种训练模型的例程和辅助功能。此脚本包含用于培训模型的各种功能。这些包括计算梯度、创建一个“train_op”(train_op = 计算loss + 运行反向传播)和一个训练循环函数。训练循环允许用户传入“train_op”并根据用户指定的参数运行优化。

简单来说,我们需要定义一个train_op,这个train_op包含两个部分,如何计算loss和如何进行反向传播,每一步,都会运行train_op里面的内容,进行梯度的计算,和反向传播。所以定义train_op是tf.contrib.training.train的核心

2.使用train的简单的例子

2.1载入数据和创建模型

images, labels = LoadData(...)
predictions = MyModel(images)

2.2定义loss

tf.contrib.losses.log_loss(predictions, labels)total_loss = tf.contrib.losses.get_total_loss()

2.3定义优化器

optimizer=tf.compat.v1.train.MomentumOptimizer(FLAGS.learning_rate,FLAGS.momentum)

2.4创建train_op

train_op = tf.contrib.training.create_train_op(total_loss, 
optimizer)

2.5运行训练过程

Run training.tf.contrib.training.train(train_op, my_log_dir)

3.如何定义train_op

根据以上所说,使用train来训练模型的核心就是创建一个train_op,下面我们讲讲如何创建一个train_op

为了使用’ train '函数,我们需要创建一个train_op:
train_op包含三个部分

  • (a)计算损失,
  • (b)应用梯度更新权重和
  • ©返回损失的值。
    我们使用tf.contrib.training。create_train_op创建这样一个“train_op”,如下。
train_op = tf.contrib.training.create_train_op(total_loss, 
optimizer)

是不是没听懂,没关系,我们举几个例子。

3.1创建一个train_op,对梯度进行裁剪操作

train_op = tf.contrib.training.create_train_op(    total_loss,    optimizer,    transform_grads_fn=clip_gradient_norms_fn(3))

3.2创建train_op并通过提供来自变量的映射来缩放梯度

 # Create the train_op and scale the gradients by providing a map from variable
  # name (or variable) to a scaling coefficient:
  def transform_grads_fn(grads):
    gradient_multipliers = {
   
   
      'conv0/weights': 1.2,
      'fc8/weights': 3.4,
    }
    return tf.contrib.training.multiply_gradients(
            grad
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值