96SEO 2026-02-19 12:22 2
d2lwarnings.filterwarnings(ignore)

d2l.load_data_fashion_mnist(batch_size)
nn.CrossEntropyLoss(),可以快速构造交叉熵损失函数
nn.CrossEntropyLoss(reductionnone)
d2l.load_data_fashion_mnist(batch_size)
这个变量表示神经网络训练的轮数或称为“纪元”。
每一轮遍历整个数据集一次就叫做一个epoch。
例如设置num_epochs
Rate的缩写。
它决定了在每一步更新时权重更新的幅度。
较小的学习率会导致更慢的收敛速度但可能找到更好的局部最小值较大的学习率可能会导致错过最优解或者在最优解附近震荡。
这里设置了两个不同的学习率0.1
在这个例子中它是通过调用torch.optim.SGD(params,
nn.Parameter(torch.randn(num_inputs,
nn.Parameter(torch.zeros(num_hiddens,
nn.Parameter(torch.randn(num_hiddens,
nn.Parameter(torch.zeros(num_outputs,
这行代码调用了某个模块假设为d21中的一个方法train_ch3来开始训练过程。
这个方法的参数包括
d2l.load_data_fashion_mnist(batch_size)
用于计算损失值的函数或类通常用来衡量预测与真实标签之间的差距。
这里从torch.nn直接取的交叉熵损失没有传入具体参数只是设置none
nn.CrossEntropyLoss(reductionnone)
在PyTorch中nn.CrossEntropyLoss是一个损失函数用于测量分类任务的预测值与真实值之间的差距。
nn.CrossEntropyLoss(reductionnone)reductionnone表示损失函数会返回一个与输入同样大小的损失张量而不是将所有损失值缩减为一个单一的数值。
这意味着每个输入样本都会有一个对应的损失值这对于需要单独处理每个样本的损失例如在自定义的损失计算中非常有用。
例如如果有一个批量大小为N的输入和一个对应的标签nn.CrossEntropyLoss(reductionnone)将会返回一个长度为N的损失张量其中每个元素都是对应输入样本的交叉熵损失。
这样
可以根据需要进一步处理这些损失值例如进行加权平均或者选择性地更新模型参数。
test_iterlossupdater以及其内的params都是torch.nn调用的
方法会计算张量中所有元素的个数不考虑张量的形状或维度。
例如对于一个形状为
可能被用来获取类别总数这在某些情况下是需要的比如计算某个统计量时需要知道总的样本数。
是一个内置函数用于检查一个对象是否是一个特定类型的实例或者是其子类的实例。
它的基本语法如下
Q:反向传播函数需要自己写吗还是每次只要.backward就行了
A:在PyTorch中通常不需要自己手动编写反向传播函数。
PyTorch的自动微分autograd系统已经为大多数常见的数学运算提供了内置的反向传播函数。
当你使用PyTorch的张量tensor进行操作时这些操作会被记录在一个计算图中PyTorch能够自动地计算并应用链式法则来执行反向传播。
torch.nn.functional.mse_loss(predictions,
print(linear_model.weight.grad)
print(linear_model.bias.grad)backward看似只是一行代码没有任何赋值实际上是update的迭代更新需要访问梯度backward求出了梯度的值存储在哪里以便直接访问了
方法被调用来计算损失函数关于模型参数的梯度。
这些梯度是自动累积在参数的
属性中的。
然后优化器updater使用这些梯度来更新模型的参数。
之前这行代码清除了过往的梯度。
这是必须的因为默认情况下梯度是累积的即每次调用
updater.step()这行代码使用计算出的梯度来更新模型的参数。
这是优化器的一个方法它执行了实际的参数更新步骤。
的结果被使用的地方。
这个过程在训练循环的每次迭代中都会发生因此模型的参数会在每个批次的数据处理后逐渐改进。
[]d2l.use_svg_display()self.fig,
None:self.X[i].append(a)self.Y[i].append(b)self.axes[0].cla()for
self.fmts):self.axes[0].plot(x,
fmt)self.config_axes()display.display(self.fig)display.clear_output(waitTrue)def
range(num_epochs):train_metrics
torch.log(y_hat[range(len(y_hat)),
data_iter:metric.add(accuracy(net(X),
data_iter是二元元祖输入特征X输出类别y构成的可迭代列表每个元祖是一个样本。
这里定义一个实用程序类Accumulator用于对多个变量进行累加。
y.numel())之后metric变成了x1accx2y.numel
所以最后metric为所有样本acc之和所有样本的特征数之和特征数*样本数
softmax(torch.matmul(X.reshape((-1,
使用PyTorch内置的优化器和损失函数updater.zero_grad()l.mean().backward()updater.step()else:#
使用定制的优化器和损失函数l.sum().backward()updater(X.shape[0])metric.add(float(l.sum()),
的函数它接受四个参数net神经网络模型、train_iter训练数据迭代器、loss损失函数和
方法将模型设置为训练模式。
在训练模式下某些层如Dropout和BatchNorm的行为会有所不同。
实例用于累积训练损失总和、训练准确度总和和样本数。
Accumulator
使用PyTorch内置的优化器和损失函数updater.zero_grad()如果
使用定制的优化器和损失函数l.sum().backward()如果
方法累积当前批量的损失总和、准确度和样本数。
accuracy(y_hat,
metric[2]计算并返回整个迭代周期的平均训练损失总损失除以样本数和平均训练精度总准确度除以样本数。
d2l.get_fashion_mnist_labels(y)preds
d2l.get_fashion_mnist_labels(net(X).argmax(axis1))titles
preds)]d2l.show_images(X[0:n].reshape((n,
titlestitles[0:n])predict_ch3(net,
的函数它接受三个参数net神经网络模型、test_iter测试数据迭代器和
这里是想展示一下第一个X,y的预测效果所以就拿了第一批的样本第一批也有很多就像后面的图上。
d2l.get_fashion_mnist_labels(y)调用
函数假设这是一个自定义函数用于将标签索引转换为可读的标签字符串并将真实标签
d2l.get_fashion_mnist_labels(net(X).argmax(axis1))使用神经网络
titles其中每个标题由真实标签和预测标签组成中间用换行符分隔。
d2l.show_images(X[0:n].reshape((n,
2024年10月27日终于知道为什么当时从CNN开始看看不懂了基础的都在这里讲了。
。
。
作为专业的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