SEO教程

SEO教程

Products

当前位置:首页 > SEO教程 >

为什么打开我的网站会出现404错误?

96SEO 2026-02-19 11:33 13


本项目代码统一了训练方式只需在models文件夹中加入下面模型类即可使用该模型而不需要重新写训练模型等的代码减少了代码的冗余。

为什么打开我的网站会出现404错误?

代码有注释不加解释

TimeSeriesDataset(Dataset):自定义的时间序列数据集类用于处理时间序列数据的加载和预处理。

目的是将时间序列数据准备成适合机器学习模型训练的格式(按滑动窗口划分)。

Args:data

(torch.Tensor):

if_BatchingTrue):创建自定义时间序列数据集Args:args

(Namespace):

是否批次化类似XGBoost算法不需要Returns:Tuple[TimeSeriesDataset,

TimeSeriesDataset,

pd.read_csv(os.path.join(args.root_path,

args.data_path))#

1))scaler.fit(train_data)train_data

scaler.transform(train_data)vali_data

scaler.transform(vali_data)test_data

转换为张量并添加维度train_data

torch.from_numpy(train_data).float()vali_data

torch.from_numpy(vali_data).float()test_data

torch.from_numpy(test_data).float()#

将其变为[1,

train_data.unsqueeze(0).permute(0,

1)vali_data

vali_data.unsqueeze(0).permute(0,

1)test_data

test_data.unsqueeze(0).permute(0,

1)#

按滑动时间窗口转成机器学习的数据格式training_dataset

args)valiing_dataset

args)print(ftrain:{len(training_dataset)},vali:{len(valiing_dataset)},test:{len(testing_dataset)})if

if_Batching:#

batch_sizeargs.batch_size)vali_loader

shuffleTrue,

batch_sizeargs.batch_size)test_loader

shuffleFalse,

batch_sizelen(testing_dataset))return

train_loader,

self).__init__()self.input_size

configs.input_size

nn.Sequential(nn.Conv1d(in_channelsself.input_size,

out_channels64,

输入特征维度为input_size输出通道数为64卷积核大小为kernel_sizenn.ReLU(),

ReLU激活函数nn.MaxPool1d(kernel_sizeself.kernel_size,

stride1)

nn.Sequential(nn.Conv1d(in_channels64,

out_channels128,

输入通道数为64输出通道数为128卷积核大小为2nn.ReLU(),

ReLU激活函数nn.MaxPool1d(kernel_sizeself.kernel_size,

stride1)

根据卷积操作后的数据格式和输出大小计算线性层的输入维度conv_output_size

self._calculate_conv_output_size()#

线性层1输入维度为卷积层输出大小输出维度为50self.linear1

50)#

线性层2输入维度为50输出维度为预测结果的维度self.linear2

nn.Linear(50,

_calculate_conv_output_size(self):自动计算卷积层输出形状此操作避免手算该参数

参数:input_size(

self.conv1(input_tensor)conv2_output

self.conv2(conv1_output)conv_output_size

conv2_output.view(conv2_output.size(0),

-1).size(1)return

在非循环层之间应用的丢弃比例默认为0.0没有丢弃。

self.bidirectional

创建GRU层

nn.GRU(input_sizeself.input_size,

num_layersself.num_layers,dropoutself.dropout,

bidirectionalself.bidirectional,

batch_firstTrue)#

Variable(torch.zeros(self.num_layers,

x.size(0),

self).__init__()self.input_size

configs.input_size

在非循环层之间应用的丢弃比例默认为0.0没有丢弃。

self.bidirectional

如果为TrueLSTM将是双向的包括前向和后向默认为False。

self.lstm

nn.LSTM(input_sizeconfigs.input_size,

hidden_sizeconfigs.hidden_size,num_layersconfigs.num_layers,

dropoutself.dropout,

bidirectionalself.bidirectional,batch_firstTrue)

LSTM

Variable(torch.zeros(self.num_layers,

x.size(0),

Variable(torch.zeros(self.num_layers,

x.size(0),

提取最后一个时间步的隐藏状态并进行形状变换使用LSTM的最后一个时间步的隐藏状态h_out作为线性层的输入是因为模型将隐藏状态视为包含了序列信息的高层表示。

在许多情况下使用最后一个时间步的隐藏状态进行预测已经足够。

out

self.fc(h_out)

self).__init__()self.input_size

configs.input_size

输入特征的大小即输入层的维度。

self.output_size

configs.output_size

输出的大小即预测结果的维度。

self.channel_sizes

[int(size)

configs.channel_sizes.split(,)]

一个整数列表指定每个隐藏层的单元数量。

列表的长度表示隐藏层的层数每个元素表示对应隐藏层的单元数量。

self.time_step

[]input_adjust_size

range(len(self.channel_sizes)):if

0:#

对于第一层创建一个从input_size到channel_sizes[i]的线性层self.linear

self.channel_sizes[i])self.init_weights()

[self.linear,

将线性层和ReLU激活函数添加到layers列表中else:#

对于后续层创建一个从channel_sizes[i-1]到channel_sizes[i]的线性层self.linear

1],

self.channel_sizes[i])self.init_weights()

[self.linear,

创建最后一个线性层从channel_sizes[-1]到output_sizeself.linear

nn.Linear(self.channel_sizes[-1],

self.output_size)self.init_weights()

[self.linear]

使用layers列表创建一个Sequential网络self.network

init_weights(self):#

使用均值为0标准差为0.01的正态分布初始化线性层的权重self.linear.weight.data.normal_(0,

0.01)def

无论输入数据的特征数和时间步数如何都能适应到模型中。

这个修改应该可以适用于不同维度的输入数据。

x

x.view(x.size(0),

self).__init__()self.input_size

configs.input_size

在非循环层之间应用的丢弃比例默认为0.0没有丢弃。

self.bidirectional

如果为TrueLSTM将是双向的包括前向和后向默认为False。

#

定义RNN结构输入特征大小、隐藏状态维度、层数等参数self.rnn

nn.RNN(input_sizeself.input_size,

dropoutself.dropout,bidirectionalself.bidirectional,

batch_firstTrue)#

Variable(torch.zeros(self.num_layers,

x.size(0),

通过RNN传播输入数据获取输出out和最终隐藏状态h_0out,

h_0

TCN模型结构Chomp1d模块用于从卷积层的输出中移除无效的时间步。

class

self).__init__()self.chomp_size

chomp_sizedef

Chomp1d模块的作用是从卷积层的输出中移除无效的时间步即通过切片操作去掉最后的self.chomp_size个时间步。

#

由于切片操作可能导致存储不连续因此在返回结果之前需要使用contiguous()方法确保存储连续性。

return

x[:,

:-self.chomp_size].contiguous()

TemporalBlock模块包含两个卷积层和相应的正则化、激活函数和dropout操作。

第一个卷积层使用权重归一化通过Chomp1d组件移除无效的时间步然后经过ReLU激活函数和dropout操作。

第二个卷积层也经过相同的处理流程。

通过残差连接将第二个卷积层的输出和输入进行相加并通过ReLU激活函数得到最终的输出。

class

dropout0.2):super(TemporalBlock,

self).__init__()#

weight_norm(nn.Conv1d(n_inputs,

3096,

随机失活dropout。

随机失活是一种常用的正则化技术用于减少过拟合self.dropout1

nn.Dropout(dropout)#

如果输入通道数和输出通道数不相同则需要进行下采样self.downsample

nn.Conv1d(n_inputs,

使用均值为0标准差为0.01的正态分布初始化权重self.conv1.weight.data.normal_(0,

0.01)self.conv2.weight.data.normal_(0,

0.01)if

None:self.downsample.weight.data.normal_(0,

0.01)def

connection是一种在神经网络中引入跨层连接的技术。

它的目的是解决深层神经网络训练中的梯度消失或梯度爆炸问题并促进信息在网络中的流动。

#

在TCN模型中残差连接被用于将每个TemporalBlock的输出与输入进行相加。

这种设计使得信息可以直接通过跨层连接流动有助于梯度的传播和模型的训练。

#

具体地在TemporalBlock的forward方法中首先通过两个卷积层进行特征提取和建模然后将第二个卷积层的输出和输入进行相加。

这个相加的操作实现了残差连接。

最终通过ReLU激活函数对相加的结果进行非线性变换。

#

残差连接的好处是即使在网络较深的情况下梯度可以通过跨层连接直接传播到前面的层次减少了梯度消失的问题。

同时它也提供了一种捕捉输入与输出之间的细微差异和变化的机制有助于提高模型的性能。

TCN

模型的核心由多个TemporalBlock组成的网络层次结构。

每个层次上的TemporalBlock的参数根据当前层次的位置和前一层的输出通道数进行确定。

class

dropout0.2):super(TemporalConvNet,

[]self.relu

range(num_levels):dilation_size

iin_channels

dilationdilation_size,padding(kernel_size

dilation_size,

将所有的TemporalBlock按顺序组合成一个网络self.network

forward(self,

它包括一个TemporalConvNet一个线性层和一个下采样层。

输入数据首先经过TemporalConvNet进行序列建模和特征提取然后通过ReLU激活函数和残差连接进行处理。

最后通过线性层进行预测并通过下采样层将输入数据的通道数降低到与TemporalBlock的输出通道数相同以便在残差连接中使用。

class

self).__init__()self.input_size

configs.input_size

卷积层通道数的列表用于定义TemporalConvNet的深度self.kernel_size

configs.kernel_size

TemporalConvNet(self.input_size,

self.num_channels,

nn.Linear(self.num_channels[-1],

self.output_size)#

init_weights(self):self.linear.weight.data.normal_(0,

0.01)self.downsample.weight.data.normal_(0,

0.01)def

Models.layers.Transformer.decoder

import

Models.layers.Transformer.encoder

import

Models.layers.Transformer.utils

import

Need的Transformer模型。

适用于顺序数据的经典Transformer模型。

嵌入Embedding已被替换为全连接层最后一层softmax函数替换为sigmoid函数。

属性----------layers_encoding:

:py:class:list

:class:Encoder.Encoder编码器层的堆叠。

layers_decoding:

:py:class:list

:class:Decoder.Decoder解码器层的堆叠。

参数----------d_input:模型输入的维度。

d_model:输入向量的维度。

d_output:模型输出的维度。

q:查询和键的维度。

v:值的维度。

h:头数。

N:要堆叠的编码器和解码器层数量。

attention_size:应用注意力机制的反向元素数量。

如果为

None。

dropout:每个多头自注意力MHA或前馈全连接PFF块之后的dropout概率。

默认为

chunk、window

configs):根据Encoder和Decoder块创建Transformer结构。

super(Model,

configs.d_outputq

nn.ModuleList([Encoder(d_model,q,v,h,attention_sizeattention_size,dropoutdropout,chunk_modechunk_mode)

for

nn.ModuleList([Decoder(d_model,q,v,h,attention_sizeattention_size,dropoutdropout,chunk_modechunk_mode)

for

pe_functions.keys():self._generate_PE

pe_functions[pe]self._pe_period

pe_periodelif

torch.Tensor:通过Transformer进行输入传播。

通过嵌入模块、编码器和解码器堆叠以及输出模块进行输入传播。

参数----------x:形状为

(batch_size,

**pe_params)positional_encoding

positional_encoding.to(encoding.device)encoding.add_(positional_encoding)#

编码器堆叠for

self._d_model)positional_encoding

positional_encoding.to(decoding.device)decoding.add_(positional_encoding)for

layer



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback