创建一个训练函数

简介: 【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的交互模式,开始训练并实时显示拟合的效果。

相关文章
|
24天前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
105 2
|
30天前
|
存储 并行计算 PyTorch
探索PyTorch:模型的定义和保存方法
探索PyTorch:模型的定义和保存方法
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
神经网络参数初始化
**神经网络参数初始化**是深度学习的关键步骤。权重常通过**Xavier**或**He**初始化来打破对称性,适用于ReLU激活;而偏置通常初始化为0。初始化方法还包括**均匀分布**、**正态分布**、**全零**、**全一**和**固定值**。在PyTorch中,`torch.nn.init`模块提供了如`xavier_uniform_`和`kaiming_normal_`等初始化函数。预训练模型也可用于初始化,通过微调提升性能。
|
6月前
|
Python
创建模型
创建模型。
25 1
|
6月前
|
机器学习/深度学习 TensorFlow 调度
优化TensorFlow模型:超参数调整与训练技巧
【4月更文挑战第17天】本文探讨了如何优化TensorFlow模型的性能,重点介绍了超参数调整和训练技巧。超参数如学习率、批量大小和层数对模型性能至关重要。文章提到了三种超参数调整策略:网格搜索、随机搜索和贝叶斯优化。此外,还分享了训练技巧,包括学习率调度、早停、数据增强和正则化,这些都有助于防止过拟合并提高模型泛化能力。结合这些方法,可构建更高效、健壮的深度学习模型。
|
机器学习/深度学习 数据可视化 数据挖掘
使用PyTorch构建神经网络(详细步骤讲解+注释版) 02-数据读取与训练
熟悉基础数据分析的同学应该更习惯使用Pandas库对数据进行处理,此处为了加深对PyTorch的理解,我们尝试使用PyTorch读取数据。这里面用到的包是torch.utils.data.Dataset。 在下面的代码中,分别定义了len方法与getitem方法。这两个方法都是python的内置方法,但是对类并不适用。这里通过重写方法使类也可以调用,并且自定义了getitem方法的输出
使用PyTorch构建神经网络(详细步骤讲解+注释版) 02-数据读取与训练
|
机器学习/深度学习 并行计算 异构计算
在torch中,x变量数据经过处理后,变成y变量数据,再传入神经网络,数据是在最开始x上传给gpu还是将y传给gpu?
数据应该在经过处理后变成y变量数据后再传入神经网络,并将其上传到GPU。这样可以确保在传递数据时只传输必要的信息,从而减少内存使用和计算时间,并且在处理后的数据上进行操作可以更好地利用GPU的并行计算能力。
131 0
|
机器学习/深度学习 人工智能 PyTorch
|
机器学习/深度学习 PyTorch Serverless
假设测试数据集test_data为随机生成的,并设置小批次。model神经网络已经训练好了,怎么用MSE来做测试
其中,model表示已经训练好的PyTorch模型,torch.rand()函数用于生成测试数据集,torch.split()函数用于将测试数据集分成小批次,model(batch)用于对小批次的输入数据进行预测,torch.cat()函数用于将所有小批次的预测值拼接在一起,最后使用mean_squared_error()函数计算均方误差。注意,在计算均方误差之前,需要将测试数据集和预测值转换为NumPy数组并将它们从GPU中移动到CPU上。
158 0