transformer算法解析
本文参考:
详解Transformer (Attention Is All You Need) - 知乎
Transformer 代码完全解读!_AI科技大本营的博客-CSDN博客
Transformer学习笔记一:Positional Encoding(位置编码) - 知乎
1、Transformer概述
Transformer抛弃了CNN和RNN,整个网络结构完全由self-Attention和Feed Forward Neural Network机制组成。同时它有很好的并行性。
Attention机制的公式如下:
对于Self-Attention则Q=K=V
Feed Forward Neural Network(FFN)的公式如下:
全连接有两层,第一层的激活函数是ReLU,第二层是一个线性激活函数。
Transformer的整体架构如下:
训练阶段过程概述(针对seq2seq场景):
(1)输入input,首先经过input embedding和positional embedding得到了带位置信息的embedding信息
(2)encoder阶段,在每个encoder子层中包含多头注意力机制(Mutli-Head Attention)和全连接(Feed Forward),而每个Multi-Head Attention和Feed Forward又都是残差结构,最后输出包含inputs特征的memory信息
(3)输入output,output的首位是<BOS>起始符,同样经过input embedding和positional embedding得到了带位置信息的embedding信息
(4)decoder阶段,在每个decoder子层中包含两个Multi-Head Attention和全连接(Feed Forward),其中第一个Multi-Head Attention得到了output自身的特征,第二个Multi-Head Attention融合了encoder输出的memory后优化了output的特征信息
(5)decoder输出的特征经过Linear和softmax之后得到了在所有输出字符的预测分布信息,与输出字符的实际分布进行对比计算loss
推理预测阶段过程概述(针对seq2seq场景):
(1)输入inputs通过embedding模块和encoder模块得到输入特征memory
(2)将<bos>输入decoder模块结合memory预测出第一个字符,然后将<bos>和第一个字符再输入decoder模块预测出第二个字符,直到预测出<eos>结束字符
2、Transformer详述
2.1、位置编码
2.1.1 编码公式
使用sin和cos函数进行固定位置的编码,编码公式如下:
2.1.2 位置编码的演变过程
(1)用整型值标记位置
用1、2、3…标记位置,会带来以下问题:
- 模型可能会遇到比训练序列更长的序列,不利于模型的泛化
- 模型的位置值不断变大是无界的
(2)用[0,1]范围标记位置
用0表示第一个字符,用1表示最后一个字符。但是会带来以下问题:
当序列长度不同时,字符间的相对距离是不一样的。
比如序列长度为3时某两个字符的相对距离是0.5,而序列长度为4时某两个字符的相对距离是0.33。
(3)用二进制向量标记位置
用一个和input embedding维度一样的向量来表示位置,形式如下:
但是也存在问题:这样编码出来的位置向量是离散的而非连续的。
比如有4个位置需要编码,我们得到了[0,0], [0,1], [1,0], [1,1]
第2个位置[0,1]和第3个位置[1,0]到第1个位置[0,0]的相对距离是一样的。
(4)用周期函数sin来表示位置
把位置向量当中的每一个元素都用一个sin函数来表示,则第t个字符的位置可以表示为:
为了避免出现位置的冲突,可以把所有频率都设置成同一个非常小的值。公式修改为:
以上公式的特点为:
- 每个字符的向量唯一(每个sin函数的频率足够小)
- 位置向量有界且连续,模型在处理位置向量时更容易泛化,即更好处理长度和训练数据分布不一致的序列。
存在的问题:不同的位置不能通过线性变化转换得到。
(5)用sin和cos交替来表示位置
理想位置表示公式:
通过旋转的线性变化可以得到如下:
融合周期函数sin和cos得到最终版本:
2.2、多头注意力机制
2.2.1、注意力机制
注意力机制启发:人们在观察事物时不能同时仔细观察眼前的一切,只能聚焦到某一个局部。对于神经网络的应用中,就是通过一种方式得到权重再更新特征向量,使得重要的特征更突出,不重要的特征被打压。公式如下:
在seq2seq中,首先计算每个时间步的系数,是通过当前时间步的query和其他时间步对应的key做内积得到,最后用该系数乘以每个时间步的特征向量value得到注意力计算结果。
2.2.2、多头注意力机制
多头注意力机制,即多个注意力模块组合在一起。
让每个注意力机制去优化每个词汇的不同特征部分,从而均衡同一种注意力机制可能产生的偏差,让词义拥有来自更多元表达。
举例说明:bank是银行的意思,如果只有一个注意力模块,那么它大概率会学习去关注类似money、loan贷款这样的词。如果我们使用多个多头机制,那么不同的头就会去关注不同的语义,比如bank还有一种含义是河岸,那么可能有一个头就会去关注类似river这样的词汇,这时多头注意力的价值就体现出来了。
举例说明如下:
(1)输入X:batch_size=32, seq_len=15(字符串的长度), feature_size=512
(2)分别通过Wq、Wk、Wv三个权重矩阵得到query、key和value
(3)将特征拆分为多头,512=8*64,将feature_size=512拆分为8头,每一头对应64位的特征,变为(32, 8, 15, 64)
(4)并行计算score分数,batch_size * head_num=32*8=256同时进行score分数计算,计算的是seq_len中两两之间的score分数。
(5)计算attention值。(32, 8, 15, 15) 与(32, 8, 15, 64)进行矩阵相乘,得到(32, 8, 15, 64)。
(6)通过view操作再将多头特征重新组装为一个特征,得到(32, 15, 512)
(7)通过512 -> 512的权重矩阵得到输出X为(32, 15, 512)。
2.2.3 Decoder中的注意力机制
(1)假设此时输入Y为(32, 14, 512)。区别于Encoder中seq_len=15,此时Decoder中的输入Y的seq_len=14。经过第1次多头注意力机制后得到(32, 14, 512),整个过程与Encoder中的多头流程完全一致。
(2)Decoder阶段的输入变query(32, 14, 512)拆分为多头后为(32, 8, 14, 64),encoder阶段的memory拆分为多头后为key(32, 8, 15, 64)和value(32, 8, 15, 64)。通过query和key的转置相乘后得到score(32, 8, 14, 15),然后score再乘以value得到(32, 8, 14, 64),经过后续操作后最终转化为(32, 14, 512)。
2.3、掩码mask机制
在transformer中掩码主要有两个作用,一个是屏蔽掉无效的padding区域,一个是屏蔽掉来自”未来”的信息。Encoder中的掩码主要是起到第一个作用,Decoder中的掩码则同时发挥着两种作用。
屏蔽掉无效的padding区域:我们训练需要组batch进行,就以机器翻译任务为例,一个batch中不同样本的输入长度很可能是不一样的,此时我们要设置一个最大句子长度,然后对空白区域进行padding填充,而填充的区域无论在Encoder还是Decoder的计算中都是没有意义的,因此需要用mask进行标识,屏蔽掉对应区域的响应。
屏蔽掉来自未来的信息:我们已经学习了attention的计算流程,它是会综合所有时间步的计算的,那么在解码的时候,就有可能获取到未来的信息,这是不行的。因此,这种情况也需要我们使用mask进行屏蔽。如下图所示:
在训练阶段预测出最后一个字“人“即可终止,所以mask是一个倒三角的结构,通过这种mask机制可以保证并行进行训练。
2.4 整体架构流程详情手稿
3、示例代码实现
3.1 transformer.py实现transformer网络结构
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
import math, copy, timeclass Embeddings(nn.Module):def __init__(self, d_model, vocab):"""类的初始化:param d_model: 词嵌入的维度:param vocab: 词表的大小"""super(Embeddings, self).__init__()# 调用nn中的预定义层Embedding,获得一个词嵌入对象self.lutself.lut = nn.Embedding(vocab, d_model)self.d_model = d_modeldef forward(self, x):"""Embedding层的前向传播逻辑:param x: 输入给模型的单词文本通过词表映射后的one-hot向量:return: 将x传给self.lut并与根号下self.d_model相乘作为结果返回"""embedds = self.lut(x)return embedds * math.sqrt(self.d_model)class PositionalEncoding(nn.Module):def __init__(self, d_model, dropout, max_len=5000):"""位置编码器类的初始化函数:param d_model: 词嵌入维度:param dropout: dropout比率:param max_len: 每个句子的最大长度"""super(PositionalEncoding, self).__init__()self.dropout = nn.Dropout(p=dropout)# compute the positional encodings# 下面代码的计算方式与公式中给出的不同但等价,这样计算是为了避免中间的数值计算结果超出float的范围pe = torch.zeros(max_len, d_model)position = torch.arange(0, max_len).unsqueeze(1)div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model))pe[:, 0::2] = torch.sin(position * div_term)pe[:, 1::2] = torch.cos(position * div_term)pe = pe.unsqueeze(0)self.register_buffer('pe', pe)def forward(self, x):x = x + Variable(self.pe[:, :x.size(1)], requires_grad=False) # 变量级别控制gradientreturn self.dropout(x)# 定义一个clones函数,来更方便的将某个结构复制若干份
def clones(module, N):return nn.ModuleList([copy.deepcopy(module) for _ in range(N)])class Encoder(nn.Module):def __init__(self, layer, N):super(Encoder, self).__init__()# 调用时会将编码器传进来,简单克隆N份叠加在一起,组成完整的Encoderself.layers = clones(layer, N)self.norm = LayerNorm(layer.size)def forward(self, x, mask):for layer in self.layers:x = layer(x, mask)return self.norm(x)class SublayerConnection(nn.Module):"""实现子层连接结构的类"""def __init__(self, size, dropout):super(SublayerConnection, self).__init__()self.norm = LayerNorm(size)self.dropout = nn.Dropout(dropout)def forward(self, x, sublayer):sublayer_out = sublayer(x)sublayer_out = self.dropout(sublayer_out)x_norm = x + self.norm(sublayer_out)return x_normclass EncoderLayer(nn.Module):"EncoderLayer is made up of two sublayer: self-attn and feed forward"def __init__(self, size, self_attn, feed_forward, dropout):super(EncoderLayer, self).__init__()self.self_attn = self_attnself.feed_forward = feed_forwardself.sublayer = clones(SublayerConnection(size, dropout), 2)self.size = size # embedding's dimentionof model 512def forward(self, x, mask):# attention sub layerx = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, mask))# feed forward sub layerz = self.sublayer[1](x, self.feed_forward)return zdef attention(query, key, value, mask=None, dropout=None):"Compute Scaled Dot Product Attention"# 首先取query的最后一维的大小,对应词嵌入维度d_k = query.size(-1)# 按照注意力公式,将query和key的转置相乘,这里面key是将最后两个维度进行转置,再除以缩放系数得到注意力得分张量scoresscores = torch.matmul(query, key.transpose(-2, -1)) / math.sqrt(d_k)# 接着判断是否使用掩码张量if mask is not None:# 使用tensor的masked_fill方法,将掩码张量和scores张量每个位置一一比较,如果掩码张量则对应的scores张量用-1e9这个值来替换scores = scores.masked_fill(mask == 0, -1e9)# 对scores的最后一维进行softmax操作,使用F.softmax方法,这样获得最终的注意力张量p_attn = F.softmax(scores, dim=-1)# 之后判断是否使用dropout进行随机置0if dropout is not None:p_attn = dropout(p_attn)# 最后根据公式将p_attn与value张量相乘获得最终的query注意力表示,同时返回注意力张量return torch.matmul(p_attn, value), p_attnclass MultiHeadedAttention(nn.Module):def __init__(self, h, d_model, dropout=0.1):# 在类的初始化时,会传入三个参数,h代表头数,d_model代表词嵌入的维数,dropout代表进行置0比率super(MultiHeadedAttention, self).__init__()# 在函数中,首先判断h是否能被d_model整除,这是因为我们之后要给每个头分配等量的词特征,也就是embedding_dim/head个assert d_model % h == 0# 得到每个头获得的分割词向量维度d_kself.d_k = d_model // h# 传入头数hself.h = h# 创建Linear层,通过nn的Linear实例化,它的内部变换矩阵是embedding_dim * embedding_dim.# 为什么是四个呢?这是因为在多头注意力中,Q/K/V各需要一个,最后拼接的矩阵还需要一个,因此一共是四个self.linears = clones(nn.Linear(d_model, d_model), 4)# self.attn为None,它代表最后得到的注意力张量,现在还没有结果所以为Noneself.attn = Noneself.dropout = nn.Dropout(p=dropout)def forward(self, query, key, value, mask=None):# 前向逻辑函数,它输入参数有四个,前三个就是注意力机制需要的Q,K,V。最后一个是注意力机制中可能需要的mask掩码张量,默认是Noneif mask is not None:# Same mask applied to all h heads.使用unsqueeze扩展维度,代表多头中的第n头mask = mask.unsqueeze(1)# 接着获得一个batch_size的变量,它是query尺寸的第1个数字,代表有多少条样本nbatches = query.size(0)# 1) Do all the linear projections in batch for d_model => h * d_k# 首先利用zip将输入QKV与三个线性层组到一起,# 然后利用for循环将输入QKV分别传到线性层中# 接下来为每个头分割输入,这里使用view方法对线性变换的结构进行维度重塑,多加了一个维度h代表头,这意味着每个头可以获得一部分词特征组成的句子# 最后对第二维和第三维进行转置操作,为了让代表句子长度维度和词向量维度能够相邻query, key, value = [l(x).view(nbatches, -1, self.h, self.d_k).transpose(1, 2) for l, x in zip(self.linears, (query, key, value))]# 2> Apply attention on all the projected vaectors in batch# 得到每个头的输入后,接下来就是将他们传入到attention中,这里直接调用我们之前实现的attention函数,同时也将mask和dropout传入其中x, self.attn = attention(query, key, value, mask=mask, dropout=self.dropout)# 3) "concat" using a view and apply a final linear# 通过多头注意力计算后,我们就得到了每个头计算结果组成的4维张量,我们需要将其转换为输入的形状以便后续的计算x = x.transpose(1, 2).contiguous().view(nbatches, -1, self.h * self.d_k)# 最后使用线性层列表中的最后一个线性变换得到最终的多头注意力结构的输出return self.linears[-1](x)class PositionwiseFeedForward(nn.Module):def __init__(self, d_model, d_ff, dropout=0.1):"""FFN前馈全连接层,我们希望输入通过前馈全连接层后输入和输出的维度不变"""super(PositionwiseFeedForward, self).__init__()self.w_1 = nn.Linear(d_model, d_ff)self.w_2 = nn.Linear(d_ff, d_model)self.dropout = nn.Dropout(dropout)def forward(self, x):return self.w_2(self.dropout(F.relu(self.w_1(x))))class LayerNorm(nn.Module):# 规范层网络,类似于nn.BatchNormdef __init__(self, feature_size, eps=1e-6):""":param feature_size: 词嵌入的维度:param eps: 它是一个足够小的数,在规范化公式的分母中出现,防止分母为0,默认是1e-6"""super(LayerNorm, self).__init__()self.a_2 = nn.Parameter(torch.ones(feature_size))self.b_2 = nn.Parameter(torch.zeros(feature_size))self.eps = epsdef forward(self, x):mean = x.mean(-1, keepdim=True)std = x.std(-1, keepdim=True)return self.a_2 * (x - mean) / (std + self.eps) + self.b_2def subsequent_mask(size):# 生成向后遮掩的掩码张量,参数size是掩码张量最后两个维度的大小,它最后两维形成一个方阵attn_shape = (1, size, size)# 然后使用np.ones方法向这个形状中添加1元素,形成上三角阵subsequent_mask = np.triu(np.ones(attn_shape), k=1).astype('uint8')return torch.from_numpy(subsequent_mask) == 0class Decoder(nn.Module):# 根据编码器的结果以及上一次预测的结果,输出序列的下一个结果def __init__(self, layer, N):super(Decoder, self).__init__()self.layers = clones(layer, N)self.norm = LayerNorm(layer.size)def forward(self, x, memory, src_mask, tgt_mask):""":param x: 目标数据的嵌入表示:param memory: 编码器层的输出:param src_mask: 源数据的掩码张量:param tgt_mask: 目标数据的掩码张量:return:"""for layer in self.layers:x = layer(x, memory, src_mask, tgt_mask)return self.norm(x)# 使用DecoderLayer的类实现解码器层
class DecoderLayer(nn.Module):def __init__(self, size, self_attn, src_attn, feed_forward, dropout):""":param size: 词嵌入的维度大小,也代表解码器的尺寸:param self_attn: 多头自注意力对象,要求Q=K=V:param src_attn: 多头注意力对象,要求Q!=K=V:param feed_forward: 前馈全连接层对象:param dropout:"""super(DecoderLayer, self).__init__()self.size = sizeself.self_attn = self_attnself.src_attn = src_attnself.feed_forward = feed_forward# 根据结构图使用clones函数克隆三个子层连接对象self.sublayer = clones(SublayerConnection(size, dropout), 3)def forward(self, x, memory, src_mask, tgt_mask):""":param x: 上一层的输入x:param memory: 编码器语音存储变量memory:param src_mask::param tgt_mask::return:"""m = memory# 将x输入第一个子层结构,第一个子层结构的输入分别是x和self_attn函数,因为是自注意力机制,所以Q,K,V都是x,# 最后一个参数时目标数据掩码张量,这时要对目标数据进行遮掩,因为此时模型可能还没有生成任何目标数据# 比如在解码器准备生成一个字符或词汇时,我们其实已经传入了第一个字符以便计算损失,但是我们不希望在生成第一个字符时模型能利用这个信息,因此我们会将其遮掩# 同样生成第二个字符或词汇时,模型只能使用第一个字符或词汇信息,第二个字符以及之后的信息都不允许被模型使用x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, tgt_mask))# 接着进入第二个子层,这个子层中常规的注意力机制,q是输入x; k,v是编码器层输出memory,同样也传入source_mask,# 但是进行源数据遮掩并非是抑制信息泄露,而是遮掩对结果没有意义的paddingx = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))# 最后一个子层就是前馈连接子层,经过它的处理后就可以返回结果,这就是我们的解码器结构return self.sublayer[2](x, self.feed_forward)# 将线性层和softmax计算层一起实现,因为二者的共同目标是生成最后的结构,因此把类的名字叫做Generator生成器类
class Generator(nn.Module):def __init__(self, d_model, vocab):""":param d_model: 词嵌入维度:param vocab: 词表大小"""super(Generator, self).__init__()self.proj = nn.Linear(d_model, vocab)def forward(self, x):return F.log_softmax(self.proj(x), dim=-1)# 使用EncoderDecoder类实现编码器-解码器结构
class EncoderDecoder(nn.Module):def __init__(self, encoder, decoder, src_embed, tgt_embed, generator):""":param encoder: 编码器对象:param decoder: 解码器对象:param src_embed: 源数据嵌入函数:param tgt_embed: 目标数据嵌入函数:param generator: 输出部分的类别生成器对象"""super(EncoderDecoder, self).__init__()self.encoder = encoderself.decoder = decoderself.src_embed = src_embedself.tgt_embed = tgt_embedself.generator = generatordef encode(self, src, src_mask):src_embedds = self.src_embed(src)return self.encoder(src_embedds, src_mask)def decode(self, memory, src_mask, tgt, tgt_mask):target_embedds = self.tgt_embed(tgt)return self.decoder(target_embedds, memory, src_mask, tgt_mask)def forward(self, src, tgt, src_mask, tgt_mask):memory = self.encode(src, src_mask)res = self.decode(memory, src_mask, tgt, tgt_mask)return res# full model
def make_model(src_vocab, tgt_vocab, N=6, d_model=512, d_ff=2048, h=8, dropout=0.1):""":param src_vocab::param tgt_vocab::param N: 编码器和解码器堆叠基础模块的个数:param d_model: 模型中embedding的size,512:param d_ff: FeedForward Layer层中embedding的size,2048:param h: MultiHeadAttention中多头的个数,必须被d_model整除:param dropout::return:"""c = copy.deepcopyattn = MultiHeadedAttention(h, d_model)ff = PositionwiseFeedForward(d_model, d_ff, dropout)position = PositionalEncoding(d_model, dropout)model = EncoderDecoder(Encoder(EncoderLayer(d_model, c(attn), c(ff), dropout), N),Decoder(DecoderLayer(d_model, c(attn), c(attn), c(ff), dropout), N),nn.Sequential(Embeddings(d_model, src_vocab), c(position)),nn.Sequential(Embeddings(d_model, tgt_vocab), c(position)),Generator(d_model, tgt_vocab))for p in model.parameters():if p.dim() > 1:nn.init.xavier_uniform_(p)return modelif __name__ == '__main__':print("\n------------------------")print("test subsequect_mask")temp_mask = subsequent_mask(4)print(temp_mask)print("\n------------------------")print("test build model")tmp_model = make_model(10, 10, 2)print(tmp_model)
3.2 train_demo.py实现训练和推理
import time
import numpy as np
import torch
import torch.nn as nn
from torch.autograd import Variable
from transformer import make_model, subsequent_maskclass Batch:"Object for holding a batch of data with mask during training"def __init__(self, src, trg=None, pad=0):self.src = srcself.src_mask = (src != pad).unsqueeze(-2)if trg is not None:self.trg = trg[:, :-1] # decoder的输入(即期望输出除了最后一个token以外的部分)self.trg_y = trg[:, 1:] # decoder的期望输出(trg基础上再删去句子起始符)self.trg_mask = self.make_std_mask(self.trg, pad)self.ntokens = (self.trg_y != pad).data.sum()@staticmethoddef make_std_mask(tgt, pad):"""create a mask to hide padding and future words.padd 和 future words 均在mask中用0表示"""tgt_mask = (tgt != pad).unsqueeze(-2)tgt_mask = tgt_mask & Variable(subsequent_mask(tgt.size(-1)).type_as(tgt_mask.data))return tgt_maskdef data_gen(V, slen, batch, nbatches, device):"""generate random data for a src-tgt copy task:param V: 词典数量,取值范围[0, V-1], 约定0作为特殊符号使用代表padding:param slen: 生成的序列数据的长度:param batch: batch_size:param nbatches: number of batches to generate:param device::return:"""for i in range(nbatches):data = torch.from_numpy(np.random.randint(2, V, size=(batch, slen))).long()# 约定输出为输入除去序列第一个元素,即向后平移一位进行输出,同时输出数据要在第一个时间步添加一个起始符tgt_data = data.clone()tgt_data[:, 0] = 1 # 将序列的第一个时间步置为1(即约定的起始符),即可完成GT数据的构造src = Variable(data, requires_grad=False)tgt = Variable(tgt_data, requires_grad=False)if device == "cuda":src = src.cuda()tgt = tgt.cuda()yield Batch(src, tgt, 0)def run_epoch(data_iter, model, loss_compute, device=None):start = time.time()total_tokens = 0total_loss = 0tokens = 0model = model.to(device)for i, batch in enumerate(data_iter):out = model.forward(batch.src, batch.trg, batch.src_mask, batch.trg_mask)loss = loss_compute(out, batch.trg_y, batch.ntokens)total_loss += losstotal_tokens += batch.ntokenstokens += batch.ntokensif i % 50 == 1:elapsed = time.time() - startprint("Epoch Step: %d Loss: %f Tokens per Sec: %f" % (i, loss / batch.ntokens, tokens / elapsed))start = time.time()tokens = 0return total_loss / total_tokensclass LabelSmoothing(nn.Module):def __init__(self, size, padding_idx, smoothing=0.0):super(LabelSmoothing, self).__init__()self.criterion = nn.KLDivLoss(size_average=False)self.padding_idx = padding_idxself.confidence = 1.0 - smoothingself.smoothing = smoothingself.size = sizeself.true_dist = Nonedef forward(self, x, target):assert x.size(1) == self.sizetrue_dist = x.data.clone()true_dist.fill_(self.smoothing / (self.size - 2))true_dist.scatter_(1, target.data.unsqueeze(1), self.confidence)true_dist[:, self.padding_idx] = 0mask = torch.nonzero(target.data == self.padding_idx)if mask.dim() > 0:true_dist.index_fill_(0, mask.squeeze(), 0.0)self.true_dist = true_distreturn self.criterion(x, Variable(true_dist, requires_grad=False))class SimpleLossCompute:"A simple loss compute and train function."def __init__(self, generator, criterion, opt=None):self.generator = generatorself.criterion = criterionself.opt = optdef __call__(self, x, y, norm):""":param norm: loss的归一化系数,用batch中所有有效token数即可:return:"""x = self.generator(x)x_ = x.contiguous().view(-1, x.size(-1))y_ = y.contiguous().view(-1)loss = self.criterion(x_, y_)loss /= normloss.backward()if self.opt is not None:self.opt.step()self.opt.zero_grad()return loss.item() * norm# -----------------------------------
# A Easy Example
# -----------------------------------
device = "cuda"
nrof_epochs = 40
batch_size = 32
V = 11 # 词典的数量
sequence_len = 15 # 生成的序列数据的长度
nrof_batch_train_epoch = 30 # 训练时每个epoch多少个batch
nrof_batch_valid_epoch = 10 # 验证时每个epoch多少个batch
criterion = LabelSmoothing(size=V, padding_idx=0, smoothing=0.0)
model = make_model(V, V, N=2)
optimizer = torch.optim.SGD(model.parameters(), lr=0.005, momentum=0.9)
if device == "cuda":model.cuda()for epoch in range(nrof_epochs):print("traing...{%d}" % (epoch + 1 ))model.train()data_iter = data_gen(V, sequence_len, batch_size, nrof_batch_train_epoch, device)loss_compute = SimpleLossCompute(model.generator, criterion, optimizer)train_mean_loss = run_epoch(data_iter, model, loss_compute, device)print("valid...")model.eval()valid_data_iter = data_gen(V, sequence_len, batch_size, nrof_batch_valid_epoch, device)valid_loss_compute = SimpleLossCompute(model.generator, criterion, None)valid_mean_loss = run_epoch(valid_data_iter, model, valid_loss_compute, device)print(f"valid loss: {valid_mean_loss}")# greedy decode
def greedy_decode(model, src, src_mask, max_len, start_symbol):memory = model.encode(src, src_mask)# ys代表目前已生成的序列,最初为仅包含一个起始符的序列,不断将预测结果追加到序列最后ys = torch.ones(1, 1).fill_(start_symbol).type_as(src.data)for i in range(max_len -1):out = model.decode(memory, src_mask, Variable(ys), Variable(subsequent_mask(ys.size(1)).type_as(src.data)))prob = model.generator(out[:, -1])_, next_word = torch.max(prob, dim=1)next_word = next_word.data[0]ys = torch.cat([ys, torch.ones(1, 1).type_as(src.data).fill_(next_word)], dim=1)return ysprint('greedy decode')
model.eval()
src = Variable(torch.LongTensor([[1,2,3,4,5,6,7,8,9,10]])).cuda()
src_mask = Variable(torch.ones(1, 1, 10)).cuda()
pred_result = greedy_decode(model, src, src_mask, max_len=10, start_symbol=1)
print(pred_result[:, 1:])
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4504632.html
如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!
ubuntu安装nvidia 750ti显卡驱动
NVIDIA (英伟达)公司已经发布了针对 Linux 用户的显卡驱动 Nvidia Driver 334.21,该驱动程序新增加支持 GeForce GTX 750 Ti、 GeForce GTX 750、 GeForce GTX 745 和 GeForce GTX TITAN。除此之外,NVIDIA 334.21 带来了不少的 bu…...

软件测试面试题:防火墙如何保证安全?
防火墙如何保证安全? (一)内部网络和外部网络之间的所有网络数据流都必须经过防火墙;(二)只有符合安全策略的数据流才能通过防火墙;(三)防火墙自身应具有非常强的抗攻击免…...
解决Sublime Text 3在GB2312编码下的中文乱码问题
为了方便演示,首先创建了一个GB2312编码的txt文件,我们使用Sublime打开后的效果如下图,注意看sublime的左下角,除了行列信息并无其他,一般而言,说明sublime是按照UTF8编码打开的文件: 为了解决编…...
深度学习框架PyTorch入门与实践:第九章 AI诗人:用RNN写诗
我们先来看一首诗。 深宫有奇物,璞玉冠何有。 度岁忽如何,遐龄复何欲。 学来玉阶上,仰望金闺籍。 习协万壑间,高高万象逼。 这是一首藏头诗,每句诗的第一个字连起来就是“深度学习”。想必你也猜到了,这首诗…...

Oracle OJVM安全补丁
什么是OJVM PSU? CPU: Critical Patch Update Oracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患。 PSU: Patch Set Updates Oracle对于其产品每个季度发行一次的补丁包,包含了bug的修复。Oracle选取被用户下载数…...

GSL中的运行统计
运行统计 本章描述了计算数据运行统计(也称为在线统计)的例程。这些例程适用于处理大型数据集,对于这些数据集,一次性存储在内存中可能不方便或不实用。数据可以采用单遍算法一次处理一个点。每次将一个数据点添加到累加器时,都会更新内部参…...

linux初学者自定义IP地址的方法
Centos6.8与Centos没有设置IP的解决方法 1、当前版本为Centos6.8时 输入命令vi /etc/sysconfig/network-scripts/ifcfg-etho 当前版本为Centos 7时 输入命令vi /etc/sysconfig/network-scripts/ifcfg-ens33 注意事项(1)注意Centos的版本 (2)注…...

超声波测距(含报警功能)
摘要:利用超声波进行测距有许多优点比如不受光强度、色彩和电磁场等外界因素的影响,而且超声波传感器的价位较低、结构也较为简单,超声波以声速传播,方便收发与计算。在汽车倒车雷达、移动机器人的避障、特别是测量距离等许多方面…...

【Html与CSS基础】HTML中的锚点
前言 提示:锚点通俗来说就是起到文章目录的作用,精准跳转到文章指定位置 用锚点实现回到顶部、回到底部、到文章中任意段落 一、锚点是什么? 在我们学习HTML的过程中,要理解写页面的作用,最初写页面的本质是为了文章…...

Web安全测试-Checklist
Web安全测试时一个比较复杂的过程,软件测试人员可以在其中做一些简单的测试,如下:Web安全测试也应该遵循尽早测试的原则,在进行功能测试的时候(就应该执行下面的测试Checklist安全测试场景),然后…...

大数据算法系列4:二叉树,红黑树和B树
文章目录概述: 用于数据查找(搜索)的数据结构一. 散列表二. 布隆过滤器三. 二叉树3.1 二叉树3.2 平衡二叉树四. 红黑树五. B树六. 实例参考:概述: 用于数据查找(搜索)的数据结构 前面的文章系列,我们都是讲排序,这次我们来讲讲另外一个应用场景: 数据搜…...

《21天学通C++》 第二章笔记
#include <iostream> #include "...relative path to FileB\FileB"1.为了使用其他文件里面定义的函数,使用来包含自己创建的头文件。尖括号(<>)通常用于包含标准头文件,预编译的时候会把对应文件的代码包含…...

【django】配置MySQL数据库【3】
一、新建MySQL数据库 1、登录数据库 $mysql -u root -p 2、新建mgdb数据库 $create database mgdb default charsetutf8; 3、新建MySQL⽤户 $ create user zilv% identified by 123456; 4、授权mashibing⽤户访问mgdb数据库 $ grant all on mgdb.* to zilv%; 5、刷新权限 $ fl…...

java集合框架复习----(3)
文章目录四、set集合1、hashSet【重点】2、TreeSet四、set集合 无序、无下标、元素不可重复 1、hashSet【重点】 数组链表红黑树 基于hashcode计算元素存储位置当哈希吗一样的时候,调用equals,如果为true,拒接存入 package com.zheng.demo3;import j…...

解对称正定矩阵线性方程组的平方根方法
对称正定矩阵线性方程组0. 引言1. 对称正定矩阵线性方程组1.1 对称正定矩阵及其三角分解法1.2 平方根法1.3 改进平方根法1.4 代码实现2. 应用举例:最小二乘法多项式拟合函数2.1 最小二乘法拟合多项式2.2 代码实现参考文献0. 引言 在求解线性方程组中,有…...

TRC丨艾美捷TRC乙酰脲(Acetylurea)说明书
艾美捷TRC 乙酰脲化学性质: 编号A000230 化学名称乙酰脲 同义词N-(氨基羰基)乙酰胺;1-乙酰脲;乙酰脲;单乙酰脲;N-乙酰脲;国家科学委员会2766 CAS编号591-07-1 分子式C₃H₆N₂O个₂…...

web安全测试学习路线
Web 安全测试学习路线 经典框架图 技术原理 下图就展示了数据的传输流程,以及不同阶段经常出现的漏洞及其原因 一个数据的传输流程图,以便直观清晰的看到,数据在各层中是怎样运作的,以及可能发生的漏洞 工具 我的渗透利器我的渗透…...

MapReduce经典案例-TopN
1.TopN分析法介绍 TopN分析法是指从研究对象中按照某一个指标进行倒序或正序排列,取其中所需的N个数据,并对这N个数据进行重点分析的方法。 2.案例需求及分析 现假设有数据文件num.txt,现要求使用MapReduce技术提取上述文本中最大的5个数据&a…...

使用Vue将两张图片叠加再保存为一张图片下载
最终效果 将一张课程图片和一张二维码图片叠加(网上图片随便乱找,勿对号入座!!!) 步骤 先将两张图片使用css进行叠加,然后按照自己需求将图片移动到合理位置要使用到一个插件将两张图片转为…...

【工具】监听手机短信转发到群聊或服务器
背景: 在日常工作中我们需要接收线上短信验证码,每次登录需要验证码时都需要登录到手机查看,很不方便。解决方案是通过监听手机短信,及时转发到企业微信群聊,方便大家查看。 解决思路: 需要在手机上安装…...

hive判断重复数据连续并分组
目录 一、需求 二、测试案例 1.测试数据 2.实现步骤 1.判断同一班级进入班级的人是否连续 2.判断出连续的人同一班级同一人每个时间段的开始节点 3.将同一班级同一人每个时间段分组 4.取出同一班级同一人每个时间段的开始时间结束时间 5.按每个时间段按时间顺序拼接…...

VI/VIM下如何搜索字符串
1. 命令模式下,输入:/字符串 比如搜索user, 输入/user 按下回车之后,可以看到vim已经把光标移动到该字符处和高亮了匹配的字符串 2. 查看下一个匹配,按下n(小写n) 3. 跳转到上一个匹配,按下N(大写N&…...

php在线客服聊天系统
php在线客服聊天系统 最近在看workerman,因此采用GatewayWorker写了一个简易的在线客户聊天系统。仅供学习,写的不好,欢迎指点。参考采用tp5mysqlphp7.4GatewayWorkerwebsocket 具体可查看我的个人博客: 功能点 消息列表&…...

书生云王东临:从大型机到超融合 细数企业IT架构的四代技术
如果说近十年内什么IT技术最火,云计算可谓首屈一指。正是在云计算技术的演化过程中,企业的IT基础架构也随之发生了翻天覆地的变化。当计算和存储的融合架构用于虚拟化环境后,超融合这种利用分布式存储和计算虚拟化技术整合服务器集群、对外提…...

计算机会计期中考试,2017会计从业资格考试《会计电算化》基础阶段备考题
2017会计从业资格考试《会计电算化》基础阶段备考题一、单项选择题(下列各题,只有一个正确的答案,本题共20小题,每个小题1分,共20分。不选或错选均不得分)1.通用财务报表软件的特点是( )。A.报表格式与表内数据视为一体ÿ…...

vue简单实现分页器(父子组件传参,过滤器)
app.vue <template><div v-if"data"><!-- 组件 --><my-news :p"now" /><div class"pages"><spanv-for"p in data.pageCount":key"p"click"now p":class"{ active: p no…...

地区与地区编码的相互转换
geo 地区与该地区编码的相互转换 特性 简洁的转换API支持地区名称转换为该地区的编码支持地区编码转换为该地区的名称支持获得该地区的上级所属地区支持通过两个地区的的地址获得其之间的距离 使用 通过maven工程直接引入* 举个栗子�� /***将地址…...

老程序员告诉你人工智能工程师与Python工程师有什么区别?
学习Python就等于学习人工智能吗?当然不!千万不要混淆它们的概念!Python工程师并不等同于人工智能工程师。 Python工程师与人工智能工程师最根本的区别是什么? Python和JAVA、C语言一样,是一种编程语言,所以从事Python开发的人员也只能算是程序员。而人工智能工程师是从事算…...

YottaChain创始人王东临:存储公链进军商用市场的必杀技!
每个人都有大量数据要保存,而且随着科技发展数据会爆发式增长,YTA既能自用,还能增值,这就是它的价值。 在存储行业被中心化的巨头们垄断,并且成本居高不下的时候,亟待需要一种新的分布式存储方式来改造生产…...

Wisej.NET 3.1.6 Crack
新功能 Wisej.NET 3.1 通过添加几个新的独特功能和简化的安装过程增强了里程碑 3.0 版本。 除了大量错误修复和对我们库的显着性能增强之外,3.1 还包括以下值得注意的新功能: 视觉工作室市场 Wisej.NET 现在比以往任何时候都更容易使用。或 Visual Studi…...

王东临:闪存将取代硬盘 带来存储“蒸汽机革命”
早在17世纪末,早期的蒸汽机就已经出现;18世纪下半叶,詹姆斯瓦特对蒸汽机进行了彻底的改良,从而实现了大规模的工业应用,由此引发了第一次工业革命,推动了机械工业及整个人类社会文明发展的进程。第一次工业…...
2015网络安全大会-下
以下是大师讲堂下午的主要内容是: 于旸-腾讯玄武实验室负责人watercloud-知道创宇CTO万涛(老鹰)-IDF联合实验室创始人方兴(FlashSky)-瀚海源创始人.现就职阿里巴巴郭勇生(冷风)-天融信阿尔法实验室安全研究员马坤-基于众筹插件模式的分布式安全扫描平台文伟平-北京大学副教授 …...

基于nodejs的电影交流网站
末尾获取源码 开发语言:nodejs 框架:Express 数据库:MySQL5.7 数据库工具:Navicat 11 开发软件:Hbuilder / VS code 浏览器:edge / 谷歌 目录 一、项目简介 二、系统功能 三、系统项目截图 3.1前台首页…...

【安全】WEB安全测试检查清单
WEB安全测试检查清单测试名称测试内容说明测试结果客户端安全测试XSS测试用户输入畸形脚本及标签过滤转义 CSRF测试验证服务器是否添加会话TOKEN及验证referer JSON挟持测试检测json格式变化及是否验证referer XSIO测试测试是否限制图片postion为absolute 基础认证钓鱼测试…...

免费开源智慧农业物联网云平台 V3.0.1.2含源码
一、简介 JINGLI(鲸哩)智能农业物联网云平台,从(设备端-APP端-平台端-管理端)全业务场景包含设备采集系统、监控控制系统、溯源系统、专家系统、仓库系统,大屏系统,开源版本毫无保留给个人及企业免费使用。 初衷&#…...

力扣(LeetCode)5. 最长回文子串(2022.01.05)
给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2: 输入:s “cbbd” 输出:“bb” 示例 3&…...
html粗圆点,HTML
网页开发工具HTML简介HTML:Hyper Text Markup Languagehtml文本的内部基本结构我是title这是一个非常漂亮的网页html的注释网页的标题这是我的第二个网页-->标题标签 ,段落标签,水平线,换行,加粗,斜体常…...

genius ACM
genius ACM 蒟蒻认为这道题好难。看了题解也并不能完全理解。主要难度在对倍增的理解上~~(其实归并排序也并不懂)~~ 题面描述 给定一个整数 M,对于任意一个整数集合 S,定义“校验值”如下: 从集合 S 中取出 M 对数(即 2M 个数&…...

VLAN和VLAN间路由
VLAN和VLAN间路由一 交换机二 vlan2.1 华为交换机的特性2.2 access接口2.2.1 在华为交换机上配置access接口2.2.2 access接口接收到报文的处理流程(打vlan tag)2.2.3 access接口发送报文的处理流程(剥离\弹出vlan tag)
web安全测试学习笔记(一)之环境搭建:OWASP_Broken_Web_Apps靶机
web安全测试环境搭建:靶机OWASP_Broken_Web_Apps、渗透机Kali。 都搭建到虚拟机VMware。 OWASP_Broken_Web_Apps下载地址:OWASP Broken Web Applications Project - Browse Files at SourceForge.net 下载的1.27z版本。下载时用迅雷下载比较快&#x…...

云等保安全合规解决方案
网络安全是一个动态的过程,绝非通过测评就可以“一劳永逸”,为了帮助用户单位落实等保2.0的相关要求,严格执行各项安全管理的制度,确保系统安全稳定运行,安全狗推出了全新的合规产品矩阵,助力用户单位通过“…...

HashMap核心源码分析
1.HashMap总览 1.1 hashmap底层储存结构图解 底层结构其实就是数组链表红黑树 1.2 HashMap类定义 先来看看HashMap的定义: public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {} 从中我们可…...

centos升级最新的包安全补丁
1.centos6、7、8以及其他的版本升级最新的安全补丁 yum update 自动升级全部最新的补丁包...

java说的tps pv是什么_面试官常问你项目的PV量或TPS,怎么说,给你一个概念
原标题:面试官常问你项目的PV量或TPS,怎么说,给你一个概念影响系统的吞吐量的点:CPU的消耗服务器内存使用IO网络宽带代码的好坏数据量的大小其他系统吞吐量几个重要参数:QPS(TPS) : 每秒处理的请求数并发数…...

数据分析必备43个Excel函数
一、关联匹配类 1. VLOOKUP 功能:用于查找首列满足条件的元素。 语法:VLOOKUP(要查找的值,要在其中查找值的区域,区域中包含返回值的列号,精确匹配或近似匹配 – 指定为 0/FALSE 或 1/TRUE)。…...

真正的QString转char,utf8编码转gb2312编码
公司代码有多国语言支持,遇到需要使用QString转char 网上很多人一碰到编码问题就无脑的Copy上面3行…… 从Qt5开始只剩下setCodecForLocale这一个了,只是影响Qt对toLocal8Bit相关函数的编码方式 QTextCodec::setCodecForCStrings(QTextCodec::codecFor…...

在rhel7中使用lsscsi --scsi_id 命令返回所有scsi设备的scsi identifier
RHEL 7: The lsscsi --scsi_id -g utility from the lssci package can be used to return the scsi identifier associated with all scsi disks within the system (but only scsi disk, not all devices). [rootlocalhost etc]# lsscsi --scsi_id [0:2:0:0] disk AVA...

代码随想录算法训练营day58||739. 每日温度 ||496.下一个更大元素 I ||503.下一个更大元素II
739. 每日温度 题目描述: 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列…...

跑步前后吃什么?
作者:悦跑圈链接:http://www.zhihu.com/question/21782239/answer/127368664来源:知乎著作权归作者所有,转载请联系作者获得授权。首先熟记这套口诀 夜跑十里,五十里,一百里, 香草味八喜&#x…...

武汉市江夏区现代服务业高质量发展政策奖励补贴20条
介绍武汉市江夏区现代服务业高质量发展若干政策措施,又有哪些奖励政策呢,有疑问可以直接找项目人员沟通,十年项目申报经验,科技企业一站式孵化平台,从公司注册、初创企业到融资上市全称陪跑。 一、支持现代服务业集聚…...

vue 生成PDF(A4标准PDF分页)
1.先安装两个插件 //页面转图片 npm install --save html2canvas //图片转PDF npm install jspdf --save 2. 在需要导出的dom节点增加refpdf 例如 <div ref"pdf"> 这是待转换的页面,点击 <button click"handleExport">导出&…...

mysql自定义函数
文章目录1、开启log_bin_trust_function_creators2、函数基本格式3、无参函数4、有参函数5、函数体内设置局部变量6、删除函数1、开启log_bin_trust_function_creators 当开启二进制日志后,如果变量log_bin_trust_function_creators为OFF,那么创建或修改…...

旺盛型人格特征和优劣势,旺盛型性格的职业发展方向
旺盛型性格的特征 旺盛型性格指的是,一个人行动上充满激情,思维上能言善辩。这种性格的人,就是人们口中所说的精力旺盛,乐观活泼的人,旺盛型性格的人,在竞争激烈的职场中,能凭借自身的不懈努力…...

大陆港澳台身份证正则验证
来自隔壁老王的身份证正则验证 /*** 身份证号码校验* param {String} idCard* returns*/ export function verifyIdCard(idCard) {const patten /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9]…...

关于图片的代码
/// <summary> /// 生成缩略图 /// </summary> /// <param name"orginalImagePat">原图片地址</param> /// <param name"thumNailPath">缩略图地址</param> /// <param name"width">缩…...

广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”
文章目录广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”服务 Docker 构建及部署代码支持服务打包&构建服务部署广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署” 服务 Docker 构建及部署 在 ADX 系统中,全链路涉及 大大小小的微服务…...

Java——接口
接口概述 接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用 Java中的接口更多的体现在对行为的抽象 接口的特点 接口用关键字interface修饰 pubic interface 接口名{}类实现接口用implements表示 public class 类名 implements 接口名{}接…...

2021-2027中国球形氧化铝市场现状及未来发展趋势
球形氧化铝粉是以火焰法/高温熔融喷射法将不规则角形颗粒的特定原料加工成球形而获得的一种比表面积小、流动性好的氧化铝粉体材料。球形氧化铝粉具有高导热、高绝缘、高硬度、耐高温、耐腐蚀和耐磨等特性。因此,球形氧化铝粉被广泛用作填充材料、抛光材料和陶瓷原料…...

让你彻底理解ThreadLocal原理和应用
1.为什么需要ThreadLocal 我们举个生活中的例子来说明: 你带着三个孩子出去逛街,路过了玩具店,三个孩子都看中了一款变形金刚。 所以你买了一个变形金刚,打算让三个孩子轮着玩。 回到家你发现,孩子因为这个玩具吵架了…...

【数据结构】顺序表
文章目录顺序表概念及结构接口实现数组相关的面试题原地移除数组中的所有元素val删除排序数组中的重复项合并两个有序数组顺序表的问题和思考顺序表 概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上…...

第1次作业:这是一个不想当程序员的未来程序员
前言:这是一个不想当程序员的未来程序员对于计算机专业的某某看法。。。。 1.结缘计算机 问题1.1:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 对于这个问题,其实计算机专业并不是我的第一…...
数据结构实训 烟台大学导游系统
#define INFINITY 10000 /*图的矩阵中A(i,i)记为0,若没有通路,记为infinity 10000。*/ #define MAX_VERTEX_NUM 40 //最大定点数定为40 #define MAX 40 #include<stdlib.h> #include<stdi…...

iOS-OC实现定时器
一、NSTimer1. 创建方法NSTimer *timer [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:selector(action:) userInfo:nil repeats:NO];TimerInterval : 执行之前等待的时间。比如设置成1.0,就代表1秒后执行方法target : 需要执行方法的对象。s…...

C语言:实验11-1-2 输出月份英文名.2021-08-06
实验11-1-2 输出月份英文名 (15 point(s)) 本题要求实现函数,可以返回一个给定月份的英文名称。 函数接口定义: char *getmonth( int n ); 函数getmonth应返回存储了n对应的月份英文名称的字符串头指针。如果传入的参数n不是一个代表月份的数字&…...

html css 奥运五环,CSS3 奥运五环加载动画
CSS语言:CSSSCSS确定html {height: 100%;}body {display: -webkit-box;display: -webkit-flex;display: -ms-flexbox;display: flex;-webkit-box-orient: vertical;-webkit-box-direction: normal;-webkit-flex-direction: column;-ms-flex-direction: column;flex-…...

【HTML5】——canvas画奥运五环
思路 先画在环下面的,如下图,最后将剩下的全部画出来 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><canvas id"c1" width"40…...

奥运五环的html页面,基于HTML5 CSS3实现奥运五环特效
特效描述:基于HTML5 CSS3实现 奥运五环特效。基于HTML5 CSS3实现奥运五环特效代码结构1. HTML代码var generateCanvasImageUrl function generateCanvasImageUrl() {var _window window,innerHeight _window.innerHeight,innerWidth _window.innerWidth;var pix…...

Opencv图像及视频基本操作
✨ 原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下 👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!...

ZYNQ #EC1 PL端模拟HDMI输出,i2c接入PCA9548复用器后设备树的分析
本文为番外篇,分析了在前面 ZYNQ7000 #1 - PL端模拟HDMI信号输出环境下的Linux界面显示 基础上,当HDMI的I2c总线非直接接入而是通过一个 i2c 选择器后,如何进行设备树修改,进行哪些相关资料参考。 目录 1 - 楔子 2 - 参考与借鉴…...

“最牛愤青教授”郑强叫板当代教育
“最牛愤青教授”郑强叫板当代教育小时候不得玩、不能玩、被别人玩,上大学后“没人管难受”,开始大玩特玩http://www.zju.edu.cn/zdxw/new/news.php?id22878“中国为什么出不了**奖?是我们的教学条件差吗?是我们的研究条件落后吗…...

华中科技大学计算机科学与技术学院郑强教授,华中科技大学教授声讨后勤被处分 校方:通报批评,取消2年评优...
为让一个班的学生住在一起,华中科技大学计算机科学与技术学院(以下称计算机学院)党委副书记、教授郑强,先是掀翻后勤经理的桌子,在受到处分后发表公开信“讨伐”该校后勤集团相关领导,引发网络热议。10月26日,郑强回复…...

大学教授郑强的经典语录
【此文来自网友“花影蹙娥眉”推荐】1.日本人宁愿喜欢黑人,也不喜欢我们,因为现在的中国人没有了精神。2.大家都在嘲笑俄罗斯,但我知道俄罗斯将来一定会发达,因为那里的人2天没吃饭了饿着肚子还排队,而我们有2个人也要…...

浙大愤青教授郑强经典语录
我的观点:之所以转载这篇文章是因为自己关于学习的很多观点都跟这位教授不谋而合。就拿考计算机等级资格证和学英语来说,看到本科时候周围很多“有志”青年都热终于做这两件事情,因为他们认为这两种技能是跟就业挂钩的,用人单位为…...

华科大计算机学院学生宿舍,华中科大教授郑强不掀桌子,班级60学生住45间寝室,会有所改观吗...
原标题:华中科大教授郑强不掀桌子,班级60学生住45间寝室,会有所改观吗有些时候,网上爆出的一些信息,我们都不太敢相信。为啥呢?因为按照普通人的认知,根本就不会出现这样情况。比如华中科技大学…...
张文宏教授再发“霸气”言论!面对疫情,一个真正的大国是什么样子?
作者丨桌子先生来源丨桌子的生活观(ID:zzdshg)昨天,张文宏的一段话在朋友圈刷屏。他说,之前预测上海有80万感染,那是在最坏的情况下(上海3000万人口),如果防疫做得还可以…...

这是浙江大学郑强教授的经典语录 虽然我不完全赞同但对他的精神佩服的五体投地...
1.我们漠视历史的价值,总以为楼宇越新越好,但你到法国市中心看看,几乎没有什么新建筑,他们以历史积淀为自豪,而我们以不断地拆楼建楼来折腾自己。 2.教育的本职不是谋生,而是唤起兴趣,鼓舞精神…...

一个大学教授让人发冷汗的讲演(浙大高分子物理郑强教授)
发信人: pigbabybme (宝贝小猪), 信区: Argue 标 题: 一个大学教授让人发冷汗的讲演 发信站: 一塌糊涂 BBS (Mon May 31 13:55:55 2004), 本站(ytht.net) 一个大学教授让人发冷汗的讲演 演讲人:浙大高分子物理郑强教授 地点:浙江图书馆报告厅 精彩语录…...

浙大高分子物理郑强教授
演讲人:精彩语录节选: "在中国这个发展中国家,你能建10所世界一流大学,那美国有多少所?日本有多少所?现在的实际状况是:世界上前200所大学,中国一所都排不进!在亚洲能排出几所?我到国外去看了以后,感到要将浙大建成世界一流大学就像共产主义理想." &qu…...

推荐视频:浙大郑强教授演讲《中国强大的真正希望》
浙大郑强教授演讲《中国强大的真正希望》: [url]http://www.20ju.com/content/V17499.htm[/url]转载于:https://blog.51cto.com/skyeagle/91541...

浙江大学教授郑强的经典语录
浙江大学教授郑强的经典语录 (本文来源于网络,仅代表作者观点) 有人戏言,郑强教授是浙大第一愤青教授,蚯蚓也不记得是否以前发过郑教授的语录没有。如果你还没有看过,请边读边思考,如果你已经看过,那就请…...

这是浙江大学郑强教授的经典语录 虽然我不完全赞同但对他的精神佩服的五体投地
1.我们漠视历史的价值,总以为楼宇越新越好,但你到法国市中心看看,几乎没有什么新建筑,他们以历史积淀为自豪,而我们以不断地拆楼建楼来折腾自己。 2.教育的本职不是谋生,而是唤起兴趣,鼓舞精神。…...

浙江大学郑强教授的演讲(国民必看)
主题:实话实说(是中国人就看一下)作者:<script type"text/javascript">sn(nickname_9886,nicknamelink_9886);</script>zxxdx( <script language"javascript" type"text/javascript"> document.write(c…...

郑强教授相关语录(转)
郑强教授相关语录 1.我们漠视历史的价值,总以为楼宇越新越好,但你到法国市中心看看,几乎没有什么新建筑,他们以历史积淀为自豪,而我们以不断地拆楼建楼来折腾自己。 2.教育的本职不是谋生,而是唤起兴趣&…...

浙大高分子物理郑强教授的激情演讲
浙大高分子物理郑强教授的激情演讲 http://6.cn/watch/3491103.html...

浙江大学郑强教授语录
浙江大学郑强教授语录1.我们漠视历史的价值,总以为楼宇越新越好,但你到法国市中心看看,几乎没有什么新建筑,他们以历史积淀为自豪,而我们以不断地拆楼建楼来折腾自己。 2.教育的本职不是谋生,而是唤起兴趣&…...

郑强教授相关语录
1。我们漠视历史的价值,总以为楼宇越新越好,但你到法国市中心看看,几乎没有什么新建筑,他们以历史积淀为自豪,而我们以不断地拆楼建楼来折腾自己。 2。教育的本职不是谋生,而是唤起兴趣,鼓舞精神…...

浙大愤青郑强教授的演讲(大学生都来看看吧)
最近看了个这个人的演讲录相,真的很不错,分析的很透彻,下面是一些截取的片段,大家看看吧,也许会给你带来感悟。 “在中国这个发展中国家,你能建10所世界一流大学,那美国有多少所?曰本有多少所?现在的实际状况是:世界…...

转:浙大高分子物理郑强教授的震撼人心的演讲
http://club.chinaren.com/138335190.html "转:浙大高分子物理郑强教授的震撼人心的演讲" 看看哈 ~~~ 演讲人:浙大高分子物理郑强教授 地点:浙江图书馆报告厅 1.“在中国这个发展中国家,你能建10所世界一流大学,那美国有多少所?曰本有多少所…...

强哥语录摘抄(郑强教授)
求其上者得其中,求其中者得其下。郑强话讲得有煽动性,得到了宣传的效果,绝大多数学生听了得到了"熏陶"、自然而然的"优越感"、为国捐躯的"使命感"。已经做成了事。 剩下的少数,注定做"沉默的…...

华中科技大学计算机学院郑强是谁,华中科技大学郑强教授,为学生声讨学校后勤集团!反被学院处分?...
近日,华中科技大学计算机学院副书记郑强教授的一封公开信,以及该校计算机学院学院的一份处分决定,在网上掀起了轩然大波!为学生请命,控诉学校后勤集团,反被处分。在郑强教授的这封控诉华中科技大学后勤集团…...

linux第一次月考成绩分析
原因分析: 1:平时没有养成细致认真的习惯,考试的时候答题粗心大意,马马虎虎,导致很多题目会做却被扣分甚至没有作对。 2:准备不充分,毛主席说,不打无准备之仗,言外之意…...

linux第一次月考总结
学习Linux已经有半个学期有余,但知道的还是不多,原先自以为知道的不少,但经历这次的考试,我才知道自己还有好多的不足,比如上课注意力总是不集中,总是会被其他各种各样的东西莫名的吸引注意,对于…...

Linux第一次月考小总结
在一次课堂上老师组织了一次对于Linux的测试,也就是第一次月考,明显的检测出来自己学习的不足,同时也从中巩固了之前的学习知识。这次测试也可以说把之前的拉通了一遍,但值得注意的是一些细节点,或者是一恍惚做错的题&…...

linux 第一次月考总结
上上周进行了Linux的第一次月考,上周也出了成绩。总的来说这个成绩让我挺意外的因为我以为不及格。 在这次月考前有很多命令记不住,经过这次月考我记住了一些,还有就是一些上课没认真听课从而漏掉的知识点也在这次的开卷考试中翻到。 同时也…...

自动化C语言第一次月考试卷,c语言程序设计第一次月考试题
c语言程序设计第一次月考试题 (5页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分C语言程序设计第一次月考试题(20H.9)班级: 姓名: 总分:一、 选择题(每小题3分&#…...

自动化C语言第一次月考试卷,145班《计算机组成与工作原理》第一次月考试卷...
怀宁县职教中心2016~2017学年度第一学期九月份摸底考试145班《计算机组成与工作原理》试卷命题人:徐志清班级:姓名:得分:一、选择题(每题1分,共30分)1、通常所说的MPG2、MPG3、MPG4与多媒体技术中的()技术有关。A、大容…...

Linux第一次月考检查
总结 一、选择题 cat:用于查看或合并文件 pwd:用于显示当前所在目录 cd:进入指定目录 ls:查看目录内容 chmod:用于修改文件权限 more:使用分页方式查看文件内容,只能向下进行翻页 touch&#x…...

Redis作为缓存应用场景分析
为什么使用缓存 Redis是一个内存型数据库,也就是说,所有的数据都会存在与内存中,基于Redis的高性能特性,我们将Redis用在缓存场景非常广泛。使用起来方便,响应也是远超关系型数据库。 应用场景 Redis的应用场景非常…...

python第一次月考及笔记
2021 — 2022 学年 第 2 学期 课程 Python编程基础 专业 大数据技术与应用 年级 2021级 本试卷共 5 页,满分100分;考试时间:120 分钟;考试方式:开卷 题 号 一 二 三 四 五 总 分 核分…...

三校生计算机word基础知识,三校生计算机第一次月考计算机基础、word.doc
三校生计算机第一次月考计算机基础、word云南省高等职业技术教育招生考试试题计算机基础、word基础知识(9月考试卷) 姓名:_ __ ____ 得分:____ ___一、单项选择题(在每小题给出的四个选项中,只有一个是符合题目要求的,请选择正确答案。本大题共20小题&am…...

第一次月考总结
linux chomd:关于用户权限 shadow:用户的账号信息 root的家目录为root,其他用户的家目录为/home/用户名 :q!:不保存强制退出 vim编辑模式中没有删除模式 rm-r : 删除文件及其中所有文件 mount:用于挂…...

Linux第一次月考
1.【 C 】命令可以把f1.txt复制为f2.txt? A、cat f1.txt | f2.txt B、cat f1.txt f2.txt C、cp f1.txt f2.txt D、copy f1.txt f2.txt 【注】复制文件夹:cp -r 2.将光盘/dev/cdrom挂载到/mnt/cdrom的…...

Python第一次月考
一、单项选择题(本大题共 25 小题,每小题 1 分,共 25 分) 在每小题列出的四个备选项中只有1个是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均不得分。 1.下列说法错误的是? 【 …...

java第二个月月考_【Java】第一次月考错题及分析
第一次月考错题及分析9.(单选题)关于下列代码说法正确的是:class ClassA {public int numberOfinstances;protected ClassA(int numberOfinstances) {this.numberOfinstances numberOfinstances;}}public class ExtendedA extends ClassA {private ExtendedA(int n…...

Java第一次月考
Java第一次月考 1、【单选题】ArrayList类的底层数据结构是? A.数组结构 B.链表结 C.哈希表结构 D.红黑树结构 【正确答案】A 【答案解析】ArrayList集合的数据结构就是数组 2、【单选题】下列程序的输出结果是 class Demo { public static void main(String[] …...

马哥N46班第一次月考
1 wc统计文件行数的选项是(C) 2 linux的用户创建命令是(A) 3 有一些文件某普通用户无法读取,说明其权限位缺少哪个权限(C) 4 bash脚本的首行通常为(D) 5 修改文件的属…...

第一次月考
以下哪个方法可以通过StringBuffer对象追加字符串? A.add() B.insert() C.append() D.into() 选C下面描述方法重写错误的是? A.要有子类继承或实现 B.子类方法的权限必须大于等于父类的权限 C.父类中被private权限修饰符的方法可以被子类重写 D.子类重写…...

自动化C语言第一次月考试卷,计算机专业第一次月考.doc
计算机专业第一次月考重庆市商务学校2016-2017学年度高三高职第一次月考计算机专业综合试卷(适用:计算机专业 时间:150分钟 总分:200分 出题人:冯义彬 审题人:廖冬梅)一、选择题(共35题,每题2分,…...

达内python第一次月考题目_月考来临!第一次月考远比你想象的重要!
原标题:月考来临!第一次月考远比你想象的重要! 国庆假期来了,月考还会远吗。大部分学校初一月考的时间在9月底前后,还有一部分学校把时间安排在假期回来之后,测个措手不及。 初一新学期的第一次月考&#x…...

达内python第一次月考题目_第一次月考试卷分析
第一次月考数学试卷分析 一、试题特点 试题充分体现了考素质、考基础、考方法、考潜能的测试功能。题目中无偏 题、 难题、 怪题, 起到了引导高中数学向全面培养学生数学素养的方面发展的作 用。 1 、基础知识考查的力度加大,重点突出,题目更…...

c语言程序设计第一次月考考试重点,为什么说初三第一次月考很重要
进入初三,肯定会迎接第一次月考。但是很多同学并不知道这次月考的真正意义在哪里,这也是导致成绩无法提高的重要原因。今天小编就为大家分析一下月考的作用,为什么要月考?以及怎样准备月考?为什么说初三第一次月考很重要?1会对整个学期的心…...

达内python第一次月考题目_第一次月考作文六篇
第一次月考作文六篇导语:月考终于来临了,我的心怦怦直跳,感觉好恐怖.不知道为什么,我担心自己会考不及格.这是很多人的第一心声。以下是小编为大家分享的第一次月考作文六篇,欢迎借鉴!第一次月考(一):刚升入初中的我,对…...

初一第一次月考总结
写在前面: 怎么说呢?一位OIer是不应该执着于文化课的。但它们是我在三鑫立足的名片,也是老师对我们所持态度的标准,所以我要重视它们,把它们应付好。 现在中考的政策就是要把每一位学生培养成全职青年。不仅语数英三科…...

musl pwn 入门 (1)
近年来,musl libc作为一个轻量级的libc越来越多地出现在CTF pwn题之中,其和glibc相比有一定的差距,因此本文我们就musl libc最常考的考点——内存分配,进行musl libc的源代码审计。 不同于glibc多达四五千行代码,大小…...

计算机病毒 重启6,电脑病毒删了重启后又有了
故障、速度、木马、系统漏洞、病毒等综合性影响,常规解决办法:1、解决杂乱文件影响(减少电脑负担)。清理杂乱文件有三个方法,第一是点网页上的“工具”,点“Internet选项(0)”,在新页面分别点“删除Cookies(I)”“删除…...

防止黑客入侵:DLL后门完全清除方法(转)
前言 后门!相信这个词语对您来说一定不会陌生,它的危害不然而欲,但随着人们的安全意识逐步增强,又加上杀毒软件的"大力支持",使传统的后门无法在隐藏自己,任何稍微有点计算机知识的人,都知道…...

质心标准差和分散程度
( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点,AB各由9张二值化的图片组成,在前述的实验中得到了A全是0,B中有3个1的迭代次数数据。 0 1 2 3 4 5 6 7 8 迭代次数 A-B 1b 1b 1b 0 0 0 0 0 0 54269.648 …...

Jetson Nano 卡在开机的nvidia界面,无法开机
现象:长时间没有使用国Jetson Nano后,无法开机,一直卡在Nvidia的界面 原因:tf卡的问题 解决措施:将tf卡取下,多次插拔,如果还是不能解决的话,擦拭一下tf卡和卡槽,有可能…...

Jetson Nano/NX系统拷贝
TF卡系统拷贝系统卡准备新卡拷贝镜像系统卡准备 TF卡镜像拷贝节省了新设备反复安装配置环境的时间,依据配置好的TF卡,直接进行完整的系统,文件配置。 将准备好的系统卡装载到Linux系统下,本文导入虚拟机中(ubuntu20.…...

基于spring cloud 的连接不同数据库的查询案例(手把手配置详解)
前言: 本文非常详细,主要讲解实际开发的代码部分,同时每个步骤都有标签,不用担心内容过长,内附详细代码。以及中途各种问题的解决方案。 springcloud案例介绍: 订单微服务能够查询订单信息,订…...

【CMake入门教程】CMake目录导航
CMake教程专栏文章列表 【手册篇】CMake帮助手册的使用【手册篇】CMake编译平台介绍 【实例篇】01.第一个程序【实例篇】02.包含头文件实例【实例篇】03.创建静态库【实例篇】04.创建一个共享库【实例篇】05.安装程序【实例篇】06.编译类型(Debug/Release/MinSizeRel/RelWithD…...

mysql查询数据库版本
方法一:select version(); 或者 select version() from dual执行结果:version : 5.7.31注意:1、sql语句一般部不分大小写2、dual解释见小结方法二mysql - version 或者 mysql - status执行的结果:第一行:mysql Ver 14.14 Distrib 5.7.31, for…...

【并发编程】线程的基本原理和Thread Dump线程分析
线程的基本原理和Thread Dump线程分析线程的基本原理线程的运行状态如何中断线程存在循环的线程中断处于阻塞状态的线程中断Thread Dump线程分析CPU不高,但响应很慢CPU很高,且响应很慢线程的基本原理 放一张线程的原理图: java代码创建线程后࿰…...

阿里妈妈智能诊断工程能力建设
丨本文作者:茂道、羲洋、君之、天柏1. 业务背景算法同学在日常工作中经常要面临一些耗时较多的临时工单,这类工单的问题类型五花八门,背后对应的原因也各不相同,例如广告主操作类问题、大盘流量波动问题、海选问题、粗排问题等。这…...

openresty 安装与使用
一、openresty的安装下载源码openresty download安装依赖apt-get install libpcre3-dev \libssl-dev perl make build-essential curl编译tar -xzvf openresty-VERSION.tar.gz# --without-http_redis2_module 将不能使用http_redis2模块./configure --prefix/usr/local/openres…...

DxO PureRAW 3 - RAW 格式照片自动降噪锐化光学校正
使用 DxO PureRAW,无需升级相机即可获取更清晰、更纯净的 RAW 文件,能够高效去除图像的噪点,并可对镜头光学方面的缺陷进行校正。官网:https://www.dxo.com/zh-cn/dxo-pureraw/DxO PureRaw 3 最大的亮点在于其加入了 DxO 最新的人…...

【数据库学习】Postgres原理及底层实现
1,事务原理 事务(transaction): 是用户定义的一组数据库操作,要么全做要么全不做,失败即回滚。 事务是恢复和并发控制的基本单元。 保存点(savePoint) 在一个大的事务中,…...

工程管理系统软件 自主研发,工程行业适用
ava版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1…...

Java开发 | 内部类 | 静态内部类 | 非静态内部类 | 匿名内部类
目录 1.内部类 1.1内部类的简单创建 1.2内部类的分类 1.2.1普通内部类 1.2.2静态内部类 1.3匿名内部类 1.4局部内部类 1.内部类 内部类就是一是一个类里面装着另外一个类,就像俄罗斯套娃一样。最外层的类我们叫外部类,内层的类我们叫内部类。 1…...

【C语言】栈区与堆区
目录分配管理方式申请大小限制不同申请效率不同总结:栈区、堆区 是内存模型 对比起来看 分配管理方式 栈区由编译器自动管理, 函数运行时分配,函数结束时释放。存放为运行函数而分配的局部变量(函数结束时,其内临时…...

交通信号标志识别软件(Python+YOLOv5深度学习模型+清新界面)
摘要:交通信号标志识别软件用于交通信号标志的检测和识别,利用机器视觉和深度学习智能识别交通标志并可视化记录,以辅助无人驾驶等。本文详细介绍交通信号标志识别软件,在介绍算法原理的同时,给出Python的实现代码以及…...

js——async和defer
同步加载——不添加async或defer 代码1(后面所有对代码的改动,都参照代码1) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" co…...

JAVA多线程知识整理
Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类,并重写该类的run()方法,该run()方法实际上就是线程执行体,代表了线程需要完成的任务。创建该子类的实例,即创建线程对象。调用线程对象的star…...

Kaggle 赛题解析 | AMP 帕金森进展预测
文章目录一、前言二、比赛说明1. Evaluation2. Timeline3. Prize4. Code Requirements三、数据说明四、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 竞赛题目:AMP-Parkinson’s Disease Progression Prediction 竞赛地址…...

Shell变量和引用
变量的定义本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代表内存地址的变量名却保持不变变量的命名…...

腾讯云轻量应用服务器和CVM云服务器比为什么这么便宜?
最近需要一台服务器,发现腾讯云轻量应用服务器很便宜,为什么这么便宜?腾讯云轻量应用服务器和CVM云服务器比为什么这么便宜?轻量服务器公网带宽起步很高,4M起,感觉配置很高呀,难道性能不行么&am…...

C语言枚举—事件提醒程序 (time函数)
编写程序,实现一个事件提醒程序,如果今天是周几,完成什么事情… 这里需要用time函数获取当前时间,或者会用到localtime()函数 (1) time的原型是: #include <time.h>time_t time( time_t *time );功能࿱…...

小程序二:不支持打开非业务域名https://xxx.xx.com
原因:由于在小程序项目中,源H5网页代码里通过 <web-view> 嵌入或引用了https://xxx.xx.com域名,导致审核失败,因为:微信公众平台如果是开通的个人账号,那他不支持打开因为:需要已经认证的企业号和服务…...

PyTorch机器学习与深度学习技术方法与案例实践应用
PyTorchPyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的可续计算包,提供两个高级功…...

Go项目(幂等性)
文章目录简介服务雪崩幂等性unique indextoken锁小结简介 前一篇为了避免因消息的重复发送导致一个订单的库存归还多次,我们新建了一张表 StockSellDetail其实这里涉及到幂等性,但在此之前,先来了解一些微服务中的常见问题 注:微…...

Python-模块和包
1.模块 概念 在Python中,模块是一种组织Python代码的方式。一个模块(py文件)可以包含多个函数、类、变量等Python对象,可以被其他Python程序导入和使用。Python标准库中包含了很多有用的模块,如math、random、os等。此外,Python还…...

Spring 远程加载配置
本文以携程的Apollo和阿里的Nacos为例。 pom中引入一下依赖: <dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>2.0.1</version></dependency><depe…...

3月第3周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!
飞瓜轻数发布2023年3月13日-3月19日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B…...

dbms_application_info
今天在查看的时候发现,原有的存储过程中添加了很多dbms_application_info函数的调用,不知道是干什么的,查了下相关资料: dbms_application_info提供了通过v$session跟踪脚本运行情况的能力,该包允许我们在v$session设…...

网络同步——帧同步和状态同步解析
目录 概述 帧同步概念 状态同步概念 对比 概述 同步就是要多个客户端表现效果是一致的,而且对于大多数的游戏,不仅仅要表现一致,还要客户端和服务器的数据也是一致的。所以同步是个网络游戏概念,只有网络游戏才需要同步&…...

The FLARE challenge中的DG Tricks
在数据预处理过程中,大多数顶级团队将强度值裁剪到特定范围内,然后以单位标准差(表6预处理CI & N)将其归一化为[ 0 , 1]或零均值,从而减小了不同个例和中心之间的强度方差。重采样被顶级球队广泛使用,但采样策略各不相同。一些…...

docker-compose 搭建RocketMQ 5.1.0 集群(双主双从模式) | Spring Cloud 28
一、前言 关于更多RocketMQ的介绍请见官网:https://rocketmq.apache.org/zh/docs/ 网上关于Docker搭建RocketMQ单机&集群的版本一般都是4.X。关于最新的5.X版本,官方给出的示例都是基于物理机&虚拟机实现,不便于我们我们日常开发使…...

论文解读:ChangeFormer | A TRANSFORMER-BASED SIAMESE NETWORK FOR CHANGE DETECTION
论文地址:https://arxiv.org/pdf/2201.01293.pdf 项目代码:https://github.com/wgcban/ChangeFormer 发表时间:2022 本文提出了一种基于transformer的siamese网络架构(ChangeFormer),用于一对共配准遥感图…...

工程师你知道PCB的蛇形走线咋搞吗?
提起蛇形线,很多PCB工程师都不会陌生,蛇形线是PCB布线环节时经常用到的一种走线方式,主要目的是为了调节延时、满足系统时序设计要求,然而很多工程师经常经常滥用蛇形线,导致信号质量降低,板子整体上没那么…...

Vue入门+DRF项目实战-01-引入REST Framework
1. 引入Django REST framework 在本章中,我们要大家介绍为什么学习Django REST framework,它能帮助我们做哪些事情。 课程思路: 我们从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实 现一个REST API为例,明确后端开发REST API要做…...

Matter名词解释
Access Control List:访问控制列表,类似一个白名单,可以用来方控制访问簇元素Administrator:管理员,对另一个节点的访问控制列表具有管理权限的节点Advertising Data:广播包数据,主要指的是通过…...

ROS安装官方教程,以及如何解决安装过程中的报错
本文参考ROS官方教程:http://wiki.ros.org/melodic/Installation/Ubuntu 安装 ros melodic,并解决了安装过程中出现的报错 我们正在为以下几个Ubuntu平台构建Debian软件包。这些软件包比基于源代码的构建更高效,也是我们推荐在Ubuntu上使用的…...

【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列 p179 -- Java Version
题目链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/ 1. 题目介绍(33. 二叉搜索树的后序遍历序列) 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&am…...

回溯算法(排列/组合/子集)
排列 无重复元素全排列 题目链接: 全排列https://leetcode.cn/problems/permutations/ 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 示例: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,…...

安卓逆向高阶之frida hook java层
文章目录1. 初次hook Java 层函数2. hook 修改函数返回值3. hook调用静态函数和非静态函数4. hook设置成员变量5. hook内部类6. hook 动态加载dex7. 枚举class1. 初次hook Java 层函数 登录走else if 逻辑,hook a 方法 function hook_java() {Java.perform(functio…...

unity的C#学习——浮点常量、字符常量和字符串常量
浮点常量 在C#中,一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。浮点常量可以使用以下几种表示形式(大写与小写效果等价): 十进制表示法:使用小数点来表示浮点数(默认为double类型ÿ…...

同样是软件测试岗位,年薪只比我大5岁,凭什么他能年薪50W?
相信大家听过网上流传的一句话: 35岁前当经理,35岁后开滴滴。 疫情当下,各大互联网都在想办法“活下去”,各种花样裁员也已经不足为奇,很多软件测试工程师就开始焦虑这个问题:在这个行业真的干到35岁就干…...

NPDP|来聊聊To B产品经理都应该具备的9个边界能力
面对市场的时候,给予To B产品经理的反馈却是繁杂且滞后的,很多无效的反馈,将直接干扰、甚至破坏产品的发展决策。 这时,To B产品经理的“边界能力”就会显得非常重要。"边界能力”简单说,就是什么该做?…...

【git报错】unable to resolve reference ‘ORIG_HEAD‘: reference broken
【git报错】unable to resolve reference ‘ORIG_HEAD’: reference broken git报错::fatal: update_ref failed for ref ‘ORIG_HEAD’: cannot lock ref ‘ORIG_HEAD’: unable to resolve reference ‘ORIG_HEAD’: reference broken 这个错误通常意…...

【算法】动态规划复习汇总
一、概述 1.1 基本概念 动态规划主要用于解决多段决策最优化的问题。 动态规划通常用来解决这样的一类问题:该问题有n个输入,问题的解由这n个输入的一个子集构成,这些子集必须满足某些事先给定的约束条件,满足约束条件的子集称…...

react中渲染企业微信的表情
前提:后端返回的的表情是解析成字符串的这种,形如:[微笑]、[旺财]等的 大致思路: 需要一张完整表情包的精灵图,用正则去匹配[***]这种文本再写个json对照表,匹配到的再用json去匹配对应的style样式。利用…...

Jetpack系列之Paging2.0 分页加载
(一)概述 Paging是Jetpack中的一个数据分页加载组件,核心成员有 DataSource, PagedList, PagedListAdapter。 // 下拉刷新 api com.scwang.smartrefresh:SmartRefreshLayout:1.1.0 api com.scwang.smartrefresh:SmartRefreshHeader:1.1.0 …...

线性回归-线性神经网络
线性神经网络 注: 该文章为作者学习深度学习笔记,共参考以下两大开源深度学习资料: 深度学习(花书) https://github.com/exacity/deeplearningbook-chinese动手学习深度学习(李沐) https://zh-v2.d2l.ai/ 线性回归 线性回归是一种常用的统计分析方法,它可以用来研究一个或多个…...

矿泉水瓶装大米,便利店能增收300万
矿泉水瓶装大米,便利店能增收300万 把大米装进矿泉水瓶,一瓶卖到60块,是同行的十倍,放进便利店,一年能卖300万 梦龙商业案例分析,带你了解商业背后的秘密 他针对的是单身人士和小情侣,这群人…...

Nginx学习(5)—— 基本结构(源码)
文章目录Nginx源码学习基本数据结构1、字符串结构:ngx_str_t2、类似资源管理的结构:ngx_pool_t3、Nginx数组结构:ngx_array_t4、哈希表结构:(1) ngx_hash_t:普通哈希表(2) ngx_hash_wildcard_t:通配符域名哈…...

使用configmap形式持久化grafana-dashboard
安装部署请参考:k8s部署prometheus 一、下载dashboard的json文件 先去官网找到喜欢的dashboard 官网地址:https://grafana.com/grafana/dashboards/?pghp&plcmtlt-box-dashboards 这个地址有很多的dashboard,根据需要去搜索即可 把js…...

PPT 转 video和gif
制作需要组合的动画页面 先绘制需要动画的图,每页一个画面。可以调整页面,让页面与图形同样大小查不多,调整方法如下图: PPT转video Microsoft PowerPoint 已经提供了导出视频的功能,然后选择视频质量,…...

【分割数据集操作集锦】毕设记录
1. 按要求将CSV文件转成json文件 有时候一些网络模型的源码会有data.json这样的文件里面存放了训练集和验证集的信息,这里我们根据csv格式的表格生成json文件。 以下代码有下述功能: 选出同时出现在csv文件里和训练集文件夹中同名的文件按照自己需要加…...

win下pytorch安装—cuda11.6 + cudnn8.4 + pytorch1.12 + tensorRT(pycuda)
安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch安装四、tensorRT8.X安装写在前面 博主这里装的是cuda11.7,最后一步tensorRT运行的时候有个pycuda的安装,它的最新版本只支持到cuda11.6,所以博主最后是又把cuda…...

Java三年经验---模拟面试--面经
1. 做一下自我介绍吧,你的XXX项目说一下?2.你这个线程池的核心线程数怎么设置的?主要考虑啥?CPU密集型: 核心线程数 CPU核数 1 IO密集型: 核心线程数 CPU核数 * 2主要需要考虑的是 是否是…...

城乡供水一体化平台-助力乡村振兴建设
城乡供水一体化管理系统建设方案城乡供水一体化管理系统是运用云计算、大数据等信息化手段,借助在线监测设备,并依托“供水信息化平台”,实时感知供水系统的运行状态,实现对农村供水工程远程监控、在线监测、实时预警、智慧监管。…...

macbook苹果电脑系统使用“终端”远程登录linux主机
登录mac系统后,依次打开顶部菜单,“前往” -> “应用程序” -> “实用工具” -> “终端”,如下图: 在打开的终端页面,输入如下代码: ssh root服务器IP地址 注:上边代码为固定格式&am…...

微信小程序wx.canvasToTempFilePath压缩上传图片,ios压缩成功但是数据sm2加密后无法发起请求,安卓一切正常
问题以及解决: 吐槽遇到的问题~ 在写微信小程序的时候,采用wx.canvasToTempFilePath压缩图片且上传的时候,安卓一切正常,我在开发工具上也一切正常,偏偏ios上就不正常,不正常不是指压缩失败,而…...

基于jsp+ssm+springboot的网上购物商城【毕业论文+源码】
摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,网上商城购物系统当然也不能排除在外。网上商城购物系统是以实际运用为开发背景,运用软件工程原理和开发方法&…...

linux提权总结
linux web到rootlinux 本地到root:关于linux提权一般来说在webshell能运行的,到本地提权应该也可以运行,只要有一定的权限,一些方法在webshell上也可以运行,只是总结了一些常见的提权方法一般来说,我自己认为提权思考的…...

大数据Doris(一):深入了解Apache Doris
深入了解Apache Doris一、Apache Doris介绍Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以 支持高并发的点查询场景,也能…...

设置浏览器横屏可行性测试,附带浏览器全屏功能
输入法问题: 1、QQ浏览器、UC浏览器可通过标签设置横屏(这种模式下输入法也是横屏状态) <meta namefull-screen contenttrue /><meta namex5-fullscreen contenttrue /><meta name360-fullscreen contenttrue /><meta n…...

代码随想录复习——单调栈篇 每日温度 下一个更大元素12 接雨水 柱状图中最大的矩形
739.每日温度 每日温度 暴力解法双指针 def dailyTemperatures(self, temperatures: List[int]) -> List[int]:n len(temperatures)res [0] * nfor i in range(n):for j in range(i,n):if temperatures[j] < temperatures[i]: continueelse: res[i] j-ibreakreturn …...

【Linux】基础IO(一) :文件描述符,文件流指针,重定向
🍎作者:阿润菜菜 📖专栏:Linux系统编程 码字不易,请多多支持😘😘 这是目录重新认识文件系统内部的文件操作我们C语言的文件操作系统内部的文件操作OS一般会如何让用户给自己传递标志位的&#x…...