有监督学习的一般结构

1.有监督学习的一般结构

在这里插入图片描述

-*-数据流图的高层,通用训练闭环:
*模型参数初始化:通常采用对参数随机赋值
*读取训练数据:读取每个数据样本及其期望输出
*在训练数据上执行推断模型:在当前模型参数配置下,每个训练样本都会得到一个输出值
*计算损失:损失函数有多种类型
*调整模型参数:最常见的策略是采用梯度下降法

当训练结束之后,便进入评估阶段。

一种常见的方法是将原始数据集一分为二,将70%的样本用于训练,其余30%的样本用于评估。

2.模型训练和评估的通用代码框架


import tensorflow as tf

#初始化变量和模型参数,定义训练闭环中的运算

def inference(X):
       #计算推断模型在数据X上的输出,并将结果返回
       
def loss(X,Y):
       #根据训练数据X及其期望输出Y计算损失

def inputs():
       #读取或生成训练数据X及其期望输出Y
       
def train(total_loss):
       #根据计算的总损失训练或调整模型参数

def evaluate(sess, X, Y):
       #对训练得到模型进行评估


#在一个会话对象中启动数据流图,并运行训练闭环
with tf.Session() as tf:
       #对所有变量初始化
       tf.global_variables_initializer().run()
       
       #获取训练数据X和期望输出Y
       X, Y = inputs()
       
       #计算总损失
       total_loss = loss(X, Y)
       total_op = train(total_loss)       
       
       coord = tf.train.Coordinator()
       threads = tf.train.start_queue_runners(sess=sess, coord=coord)
       
       #实际的训练迭代次数
       train_steps = 1000
       for step in range(training_steps):
              sess.run([train_op])
              #出于调试和学习的目的,查看损失在训练过程中递减的情况
              if step % 10 == 0:
                     print ("loss: ", sess.run([total_loss]))
              
       evaluate(sess, X, Y)
       
       coord.request_stop()
       coord.join(threads)
       sess.close()

你可能感兴趣的:(深度学习)