96SEO 2026-02-19 23:49 20
在上一节中我们通过张量来自定义式地进行数据存储和线性代数运算并通过自动微分来计算梯度。

实际上由于数据迭代器、损失函数、优化器和神经网络层很常用现代深度学习框架已经为我们实现了这些组件只需要调用即可。
我们可以通过调用框架中现有的API来读取数据将features和labels作为API的参数传递并通过数据迭代器指定batch_size此外布尔值is_train表示是否希望数据迭代器对象在每轮内打乱数据。
is_trainTrue):构造一个Python数据迭代器dataset
data.TensorDataset(*data_arrays)return
batch_size)提到的data.TensorDataset(*data_arrays)中*号的用法与函数定义中的类似它表示TensorDataset可以接受任意数量的参数。
这些参数通常是torch.Tensor对象其中最后一个参数默认被视为标签其余的参数被视为特征。
使用iter函数构造Python迭代器并使用next函数从迭代器中获取第一项。
print(next(iter(data_iter)))我是用pycharm写的代码和jupyter中有些不一样jupyter中直接写next(iter(data_iter))就可以打印出来了pycharm中必须要加上print
因为布尔值shuffleis_train表示数据迭代器对象在每轮内打乱数据所以next函数取出来的第一批量10项数据并不直接是生成的数据集中的前10项数据。
这点大家可以注意一下
对于标准深度学习模型我们可以使用框架已经预定义好的层这使我们只需关注使用哪些层来构造模型而不必关注层的实现细节。
我们先定义一个模型变量net它是一个Sequential类的实例。
Sequential类将多个层串联在一起当给定输入数据时Sequential实例将数据传入第一层然后将第一层的输出作为第二层的输入以此类推。
在线性神经网络中模型只包含一个层因此实际上不需要Sequential但是由于以后几乎所有的模型都是多个层的在这里使用Sequential类更方便理解“标准的流水线”。
在单层网络架构中这一单层称为“全连接层”因为它的每个输入都通过矩阵-向量乘法得到它的每个输出。
在pytorch中全连接层在Linear类中定义我们将两个参数传递到nn.Linear中第一个参数指定输入特征的形状即2第二个参数指定输出特征形状输出特征形状为单个标量因此为1。
nn.Sequential(nn.Linear(2,1))3.4
在使用net之前我们需要初始化模型参数如在线性回归模型中的权重和偏置。
深度学习框架通常由预定义的方法来初始化参数。
在这里我们指定每个权重系数应该从均值为0标准差为0.01的正态分布中随机抽样偏置参数将初始化为0.
我们在构造nn.Linear时指定了输入和输出的尺寸现在可以直接访问参数以设定它们的初始值。
通过net[0]选择网络中的第一层然后使用weight.data和bias.data方法访问函数。
我们还可以使用替换方法normal_和fill_来重写参数值。
print(net[0].bias.data)net[0].weight.data.normal_(0,0.01)
print(net[0].bias.data)下面是重写参数值之前的对比
小批量随机梯度下降算法是一种优化神经网络的标准工具Pytorch在optim模块中实现了该算法的许多变体。
当我们实例化一个SGD实例时我们要指定优化的参数可以通过net.parameters()从我们的模型中获得以及优化算法所需的超参数字典。
小批量随机梯度下降只需要设置lr的值这里设置为0.03.
torch.optim.SGD(net.parameters(),
在每轮里我们将完整遍历一次数据集train_data不断地从中获取一个小批量的输入和相应的标签。
对于每个小批量将执行以下步骤
通过调用net(X)生成预测并计算损失l前向传播通过反向传播来计算梯度通过调用优化器来更新模型参数
更好地度量训练效果我们计算每轮后的损失并打印出来监控训练过程。
y)trainer.zero_grad()l.backward()trainer.step()l
loss(net(features),labels)print(fepoch{epoch
下面比较一下生成数据集的真实参数和通过有限数据训练获得的模型参数。
要访问参数我们首先从net访问所需的层然后读取该层的权重和偏置。
如下所示我们估计得到的参数与生成数据集的真实参数非常接近。
我们可以使用Pytorch中的高级API更简洁地实现模型在Pytorch中data模块提供了数据处理工具nn
模块定义了大量的神经网络层和常见的损失函数我们可以通过以_结尾的方法将参数替换从而自定义初始化参数。
is_trainTrue):构造一个Python数据迭代器dataset
data.TensorDataset(*data_arrays)return
print(next(iter(data_iter)))net
print(net[0].bias.data)net[0].weight.data.normal_(0,0.01)
torch.optim.SGD(net.parameters(),
y)trainer.zero_grad()l.backward()trainer.step()l
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback