创建一个训练函数

简介: 【7月更文挑战第22天】创建一个训练函数。

创建一个训练函数
def train_tf(train_data):

   # 1.获取数据
   trainx = [train_d[0] for train_d in train_data]  # list
   trainy = [train_d[1] for train_d in train_data]

   # 2.构造预测的线性回归函数:y= W * x + b
   W = tf.Variable(tf.random_uniform([1]))  # 从均匀分布中返回随机值,即[0,1)
   b = tf.Variable(tf.zeros([1]))  # 在一维数组里放一个值
   y = W * trainx + b

   # 3.判断假设的函数的好坏
   cost = tf.reduce_mean(tf.square(y - trainy))

   # 4.优化函数
   optimizer = tf.train.AdamOptimizer(0.05)
   train = optimizer.minimize(cost)

   # 5.开始训练
   with tf.Session() as sess:
         # 初始化所有变量值
         sess.run(tf.global_variables_initializer())
         # 将画图模式改为交互模式
         plt.ion()
         for k in range(1000):
               sess.run(train)
               # 构造图形结构
               # 实时地输出训练好的W和b
               if k % 50 == 0:
                     print("第", k ,"步:","cost=", sess.run(cost), "W=", 

sess.run(W), "b=", sess.run(b))
plt.cla() # 清除原有图像
plt.plot(trainx, trainy, 'co', label='train data') # 显示数据
plt.plot(trainx, sess.run(y), 'y', label='train result') # 显示拟合
plt.pause(0.01)
plt.ioff() # 关闭交互模式
plt.close() # 关闭当前窗口
print("训练完成!")

         # 输出训练好的W和b
         print("finally_cost=", sess.run(cost), "finally_W=", sess.run(W), 

"finally_b=", sess.run(b))
return sess.run(W)[0], sess.run(b)[0]
tf.reduce_mean()函数用于计算张量Tensor沿着指定数轴(Tensor的某一维度)的平均值,主要用于降维或计算结果的平均值。第4步中,用梯度下降算法找最优解,通过梯度下降法为最小化损失函数增加了相关的优化操作。在训练过程中,先实例化一个优化函数,并基于一定的学习率进行梯度优化训练,如tf.train.AdamOptimizer(),该优化函数是一个寻找全局最优点的优化算法,引入了二次方梯度校正;使用minimize()操作,不仅可以优化及更新训练的模型参数,也可以为全局步骤(Global Step)计数,函数的参数传入损失值节点cost,再启动一个外层的循环,优化器就会按照循环的次数沿着cost最小值的方向优化参数。第5步开始训练,先初始化所有变量值和操作,打开plt的交互模式,开始训练并实时显示拟合的效果。

相关文章
|
6月前
|
人工智能 自然语言处理 物联网
RoSA: 一种新的大模型参数高效微调方法
随着语言模型不断扩展到前所未有的规模,对下游任务的所有参数进行微调变得非常昂贵,PEFT方法已成为自然语言处理领域的研究热点。PEFT方法将微调限制在一小部分参数中,以很小的计算成本实现自然语言理解任务的最先进性能。
161 1
|
6月前
|
机器学习/深度学习 JSON 算法
如何在自定义数据集上训练 YOLOv8 实例分割模型
在本文中,我们将介绍微调 YOLOv8-seg 预训练模型的过程,以提高其在特定目标类别上的准确性。Ikomia API简化了计算机视觉工作流的开发过程,允许轻松尝试不同的参数以达到最佳结果。
|
1月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
190 2
|
1月前
|
PyTorch 算法框架/工具
数据集学习笔记(三):调用不同数据集获取trainloader和testloader
本文介绍了如何使用PyTorch框架调用CIFAR10数据集,并获取训练和测试的数据加载器(trainloader和testloader)。
37 4
数据集学习笔记(三):调用不同数据集获取trainloader和testloader
|
1月前
|
存储 并行计算 PyTorch
探索PyTorch:模型的定义和保存方法
探索PyTorch:模型的定义和保存方法
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
神经网络参数初始化
**神经网络参数初始化**是深度学习的关键步骤。权重常通过**Xavier**或**He**初始化来打破对称性,适用于ReLU激活;而偏置通常初始化为0。初始化方法还包括**均匀分布**、**正态分布**、**全零**、**全一**和**固定值**。在PyTorch中,`torch.nn.init`模块提供了如`xavier_uniform_`和`kaiming_normal_`等初始化函数。预训练模型也可用于初始化,通过微调提升性能。
|
6月前
|
Python
创建模型
创建模型。
29 1
|
6月前
|
关系型数据库 MySQL 数据库
定义模型和模型配置
定义模型和模型配置。
45 1
|
机器学习/深度学习 并行计算 异构计算
在torch中,x变量数据经过处理后,变成y变量数据,再传入神经网络,数据是在最开始x上传给gpu还是将y传给gpu?
数据应该在经过处理后变成y变量数据后再传入神经网络,并将其上传到GPU。这样可以确保在传递数据时只传输必要的信息,从而减少内存使用和计算时间,并且在处理后的数据上进行操作可以更好地利用GPU的并行计算能力。
132 0
|
机器学习/深度学习 人工智能 PyTorch