基于tensorflow模型训练基本步骤:构造graph图+执行图

1 训练模型的基本步骤

1.1 构造图

构造图的流程一般如下步骤:

  • Step 1: 读数据 : tf.data
  • Step 2: 为输入input和label标签创建placeholders: tf.placeholder()
  • Step 3: 创建参数变量等:tf.get_variable()
  • Step 4: inference
  • Step 5: 构造loss function
  • Step 6: 创建optimizer优化器
eg:
opt = tf.train.GradientDescentOptimizer(learning_rate=0.001)
optimizer = opt.minimize(loss)

1.2 训练模型

  • Step 1 : 初始化variables
  • Step 2: 运行optimizer,用feed_dict把输入值和标签label传进模型
  • Step 3: 用FileWriter写日志文件
writer = tf.summary.FileWriter('./graphs/result', sess.graph)
  • Step 4: 用TensorBoard看结果
tensorboard --logdir='./graphs'

2 Tensorflow读数据和优化器函数

2.1 tf.data

Placeholder的好处就是把数据处理放在tensorflow之外处理,用python方便,但是弊端就是使用单线程处理数据,通常会降低整个程序的执行过程。
如下是一些读取数据的函数,可以根据实际文件的格式进行读取:

  • tf.data.Dataset.from_tensor_slices((features, labels))
  • tf.data.TextLineDataset(filenames)
  • tf.data.FixedLengthRecordDataset(filenames)
  • tf.data.TFRecordDataset(filenames)

tf.data确实效率更高吗?
确实如此,如果用placeholder需要时间:9.05s,相同条件下用tf.data,处理时间是:6.12s。

2.2 Optimizer

tensorflow怎么知道哪些variable需要更新?
Session会将所有loss依赖的 trainable variables在训练过程中进行更新。
在这里插入图片描述
所有的变量参数默认都是trainable的,除非我们指定训练过程中不需要更新:

tf.Variable(initial_value=None, trainable=True, ...)

我们来看看tensorflow有一些什么优化器:

  • tf.train.GradientDecscentOptimizer
  • tf.train.AdagradOptimizer
  • tf.train.MomentumOptimizer
  • tf.train.AdamOptimizer
  • tf.train.FtrlOptimizer
  • tf.train.RMSPropOptimizer

猜你喜欢

转载自blog.csdn.net/BGoodHabit/article/details/109044150