深度学习入门7-RNN、LSTM和GRU的一个案例代码实现
文章目录
- 一、案例介绍
- 二、代码实现
- 1.引入库并将字符转化为张量
- 2.构建RNN、LSTM和GRU类
- 3.模型训练
- 4.模型评估
- 5.模型预测
- 总结
一、案例介绍
以一个人名分类器的案例,实例化RNN、LSTM和GRU。
数据就是torch官网的人名分类的数据。
二、代码实现
1.引入库并将字符转化为张量
from io import open
import glob
import os
import string
import unicodedata
import random
import time
import math
import torch
import torch.nn as nn
#import matplotlib.pyplot as pltall_letters=string.ascii_letters+".,;"
n_letters=len(all_letters)
#print("n_letters:",n_letters)#函数的作用是去掉一些语言的重音标记
def unicodeToAscii(s):return ''.join(c for c in unicodedata.normalize('NFD',s) if unicodedata.category(c)!='Mn' and c in all_letters)data_path="./data/names/"def readLines(filename):#打开指定的文件并读取所有内容,使用strip()去掉两侧的空白符,然后以‘\n’为换行符进行切分lines=open(filename,encoding='utf-8').read().strip().split('\n')return [unicodeToAscii(line) for line in lines]#构建一个人名类别与具体人名对应关系的字典
category_lines={}#构建所有类别的列表
all_categories=[]#遍历所有的文件,使用glob.glob可以利用正则表达式的遍历
for filename in glob.glob(data_path+"*.txt"):#获取每个文件的文件名,得到名字的类别category=os.path.splitext(os.path.basename(filename))[0]#逐一将其装入所有类别的列表中all_categories.append(category)#然后读取美俄文件的内容,形成名字的列表lines=readLines(filename)#按照对应的类别,将名字列表写入到category_lines字典中category_lines[category]=linesn_categories=len(all_categories)def lineToTensor(line):#首先初始化一个全零的张量,这个张良的形状是(len(line),1,n_letters)#代表人名中的每一个字母都用一个(1*n_letters)张量来表示tensor=torch.zeros(len(line),1,n_letters)#遍历每个人名中的每个字符,并搜索其对应的索引,将该索引位置置1for li,letter in enumerate(line):tensor[li][0][all_letters.find(letter)]=1return tensor
line="bai"
line_tensor=lineToTensor(line)
print(line_tensor)
这里print的结果为
tensor([[[0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0.]],[[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0.]],[[0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0.]]])
实现了将字符转化为张量的目的。
2.构建RNN、LSTM和GRU类
class RNN(nn.Module):def __init__(self,input_size,hidden_size,output_size,num_layers=1):#input_size:代表RNN输入的最后一个维度,hidden_size:代表RNN隐藏层的最后一个维度,output_size:代表RNN网络最后线性层的输出维度,num_layers:代表RNN网络的层数super(RNN,self).__init__()self.input_size=input_sizeself.hidden_size=hidden_sizeself.output_size=output_sizeself.num_layers=num_layers#实例化预定义的RNN,三个参数分别是input_size,hidden_size,num_layersself.rnn=nn.RNN(input_size,hidden_size,num_layers)#实例化全连接线性层,作用是将RNN的输出维度转换成指定的输出维度self.linear=nn.Linear(hidden_size,output_size)#实例化nn中预定义的softmax层,用于从输出层中获得类别的结果self.softmax=nn.LogSoftmax(dim=-1)def forward(self,input1,hidden):#input1代表人名 分类器中的输入张量,形状是1*n_letters,hidden:代表RNN的隐藏层张量,形状是self.num_layers*1*self.hidden_size#注意一点输入到RNN中的张量要求是三维张量,所以需要用unsqueeze()函数扩充维度input1=input1.unsqueeze(0)#将input1和hidden输入到RNN的实例化对象中,如果num_layers=1,rr恒等于hnrr,hn=self.rnn(input1,hidden)#将从RNN中获得的结果通过线性层的变换和softmax层的处理,最终返回结果return self.softmax(self.linear(rr)),hndef initHidden(self):#本函数的作用是用来初始化一个全零的隐藏层张量,维度是3return torch.zeros(self.num_layers,1,self.hidden_size)class LSTM(nn.Module):def __init__(self,input_size,hidden_size,output_size,num_layers=1):#input_size:代表输入张量x中最后一个维度,hidden_size:代表隐藏层张量的最后一个维度,output_size:代表线性层最后的输出维度,num_layers:代表LSTM网络的层数super(LSTM,self).__init__()self.input_size=input_sizeself.hidden_size=hidden_sizeself.output_size=output_sizeself.num_layers=num_layers#实例化预定义的LSTM,三个参数分别是input_size,hidden_size,num_layersself.lstm=nn.LSTM(input_size,hidden_size,num_layers)#实例化全连接线性层,作用是将RNN的输出维度转换成指定的输出维度self.linear=nn.Linear(hidden_size,output_size)#实例化nn中预定义的softmax层,用于从输出层中获得类别的结果self.softmax=nn.LogSoftmax(dim=-1)def forward(self,input1,hidden,c):#注意LLSTM网络的输入有3个张量,尤其不要忘记细胞状态cinput1=input1.unsqueeze(0)#将3个参数输入到LSTM对象中rr,(hn,cn)=self.lstm(input1,(hidden,c))#最后将3个张量结果全部返回,同时rr要经过线性层和softmax的处理return self.softmax(self.linear(rr)),hn,cndef initHiddenAndC(self):#对于LSTM来说,初始化的时候同时要初始化hidden和细胞状态c#hidden和c的形状保持一致c=hidden=torch.zeros(self.num_layers,1,self.hidden_size)return hidden,cclass GRU(nn.Module):def __init__(self,input_size,hidden_size,output_size,num_layers=1):#input_size:代表输入张量x的最后一个维度,hidden_size:代表隐藏层的最后一个维度,output_size:代表指定线性层的输出维度,num_layers:代表RNN网络的层数super(GRU,self).__init__()self.input_size=input_sizeself.hidden_size=hidden_sizeself.output_size=output_sizeself.num_layers=num_layers#实例化预定义的GRU,三个参数分别是input_size,hidden_size,num_layersself.gru=nn.GRU(input_size,hidden_size,num_layers)#实例化全连接线性层,作用是将GRU的输出维度转换成指定的输出维度self.linear=nn.Linear(hidden_size,output_size)#实例化nn中预定义的softmax层,用于从输出层中获得类别的结果self.softmax=nn.LogSoftmax(dim=-1)def forward(self,input1,hidden):#input1代表人名 分类器中的输入张量,形状是1*n_letters,hidden:代表GRU的隐藏层张量,形状是self.num_layers*1*self.hidden_size#注意一点输入到GRU中的张量要求是三维张量,所以需要用unsqueeze()函数扩充维度input1=input1.unsqueeze(0)#将input1和hidden输入到GRU的实例化对象中,如果num_layers=1,rr恒等于hnrr,hn=self.gru(input1,hidden)#将从GRU中获得的结果通过线性层的变换和softmax层的处理,最终返回结果return self.softmax(self.linear(rr)),hndef initHidden(self):#本函数的作用是用来初始化一个全零的隐藏层张量,维度是3return torch.zeros(self.num_layers,1,self.hidden_size)#参数
input_size=n_letters
n_hidden=128
output_size=n_categories
input1=lineToTensor('B').squeeze(0)
print(input1)
hidden=c=torch.zeros(1,1,n_hidden)rnn=RNN(input_size,n_hidden,output_size)
lstm=LSTM(input_size,n_hidden,output_size)
gru=GRU(input_size,n_hidden,output_size)rnn_output,next_hidden=rnn(input1,hidden)
print('rnn:',rnn_output)
print('rnn_shape:',rnn_output.shape)lstm_output,next_hidden1,c=lstm(input1,hidden,c)
print('lstm',lstm_output)
print('lstm_shape:',lstm_output.shape)gru_output,next_hidden2=gru(input1,hidden)
print('gru:',gru_output)
print('gru_shape',gru_output.shape)
这里输入和实例化的输出打印出来如下
#input1
tensor([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0.]])
#output
rnn: tensor([[[-2.8971, -2.8890, -2.9014, -2.7889, -2.9610, -2.9203, -2.8560,-2.8833, -2.9238, -2.9166, -2.8929, -2.9164, -2.9246, -2.9550,-2.8811, -2.8356, -2.8890, -2.8122]]], grad_fn=<LogSoftmaxBackward>)#output_shape
rnn_shape: torch.Size([1, 1, 18])
这里以RNN的输出为例,LSTM和GRU类似。
3.模型训练
def categoryFromOutput(output):#output:从输出结果中得到指定的类别#需要调用topk()函数,得到最大的值和索引,作为我们的类别信息top_n,top_i=output.topk(1)#从top_i中取出索引的值category_i=top_i[0].item()#从前面已经构造好的all_categories中得到对应语言的类别,返回类别和索引return all_categories[category_i],category_icategory,category_i=categoryFromOutput(gru_output)
#print('category:',category)
#print('category_i:',category_i)def randomTrainingExample():#该函数的作用是用于随机产生训练函数#第一步使用random.choice()方法从all_categories中随机选择一个类别category=random.choice(all_categories)#第二步通过category_lines字典取出category类别对应的名字列表line=random.choice(category_lines[category])#第三步将类别封装成tensorcategory_tensor=torch.tensor([all_categories.index(category)],dtype=torch.long)#将随机取到的名字通过lineToTensor()转换成一个onehot张量line_tensor=lineToTensor(line)return category,line,category_tensor,line_tensor
for i in range(10):category,line,category_tensor,line_tensor=randomTrainingExample()#print('category=',category,'/ line=',line,'/ category_tensor=',category_tensor)
#print('line_tensor=',line_tensor)#定义损失函数,nn.NLLLoss()函数,因为和RNN最后一层的nn.LogSoftmax()逻辑匹配
criterion=nn.NLLLoss()#设置学习率为0.005
learning_rate=0.005def trainRNN(category_tensor,line_tensor):#category_tensor:代表训练数据的标签#line_tensor:代表训练数据的特征#第一步初始化一个RNN隐藏层的张量hidden=rnn.intHidden()#关键的一步:将模型结构中的梯度归零rnn.zero_grad()#循环遍历训练数据中line_tensor中的每一个字符,传入RNN中,并且迭代更新hiddenfor i in range(line_tensor.size()[0]):output,hidden=rnn(line_tensor[i],hidden)#因为rnn的输出是三维张量,为了满足category_tensor,需要进行降维操作loss=criterion(output.squeeze(0),category_tensor)#进行反向传播loss.backward()#显示的更新模型中的所有参数for p in rnn.parameters():#要将参数的张量表示与参数的梯度进行乘法运算并乘以学习率,结果加到参数上,并进行覆盖更新p.data.add_(-learning_rate,p.grad.data)#返回RNN最终的输出结果output,和模型的损失lossreturn output,loss.item()def trainLSTM(category_tensor,line_tensor):#初始化隐藏层张量,以及初始化细胞状态hidden,c=lstm.initHiddenAndC()#先要将LSTM网络的梯度归零lstm.zero_grad()#遍历所有的输入时间步的xifor i in range(line_tensor.size()[0]):#注意LSTM每次输入包含三个张量output,hidden,c=lstm(line_tensor[i],hidden,c)#将预测张量,和目标标签张良输入损失函数中loss=criterion(output.squeeze(0),category_tensor)#进行反向传播loss.backward()#进行参数的显示更新for p in lstm.parameters():p.data.add_(-learning_rate,p.grad.data)return output,loss.item()def trainGRU(category_tensor,line_tensor):#注意GRU网络初始化的时候只需要初始化一个隐藏层的张量hidden=gru.initHidden()#首先将GRU网络的梯度进行清零gru.zero_grad()#遍历所有的输入时间步xifor i in range(line_tensor.size()[0]):output,hidden=gru(line_tensor[i],hidden)#将预测的张量值和真实的张量标签传入损失函数中loss=criterion(output.squeeze(0),category_tensor)#进行反向传播loss.backward()for p in gru.parameters():p.data.add_(-learning_rate,p.grad.data)return output,loss.item()def timeSince(since):#本函数的作用是打印每次训练的耗时,since是训练开始的时间#第一步获取当前的时间now=time.time()#第二步得到时间差s=now-since#第三步计算得到分钟数m=math.floor(s/60)#第四步得到秒数s-=m*60#返回指定格式的耗时return '%dm %ds'% (m,s)#设置训练的迭代次数
n_iters=1000
#设置结果的打印间隔
print_every=50
#设置绘制损失曲线上的制图间隔
plot_every=10def train(train_type_fn):#train_type_fn代表选择哪种模型来训练函数,比如选择trainRNN#初始化储存每个制图间隔损失的列表all_losses=[]#获取训练开始的时间start=time.time()#设置初始间隔的损失值等于0current_loss=0#迭代训练for iter in range(1,n_iters+1):#通过randonTrainExample()函数随机获取一组训练数据和标签category,line,category_tensor,line_tensor=randomTrainingExample()#将训练特征和标签张量传入训练函数中,进行模型的训练output,loss=train_type_fn(category_tensor,line_tensor)#累加损失值current_loss+=loss#如果到了迭代次数的打印间隔if iter %print_every==0:#取该迭代步的output通过函数categoryFromOutput()获取对应的类别和索引guess,guess_i=categoryFromOutput(output)#判断和真实的类别标签进行比较,如果相同则为True,如果不同则为Falsecorrect='True' if guess==category else 'Falese(%s)'%category#打印若干信息print('%d %d%% (s%) %.4f %s / %s %s' % (iter,iter/n_iters*100,timeSince(start),loss,line,guess,correct))#如果到了迭代次数的制图间隔if iter%plot_every==0:#将过去若干轮的平均损失值添加到all_losses列表中all_losses.append(current_loss/plot_every)#将间隔损失值重置为0current_loss=0#返回训练的总损失列表,并返回训练的耗时return all_losses,int(time.time()-start)# #调用train函数,分别传入RNN,LSTM,GRU的训练函数
# #返回的损失列表,以及训练时间
all_losses1,period1=train(trainRNN)
all_losses2,period2=train(trainLSTM)
all_losses3,period3=train(trainGRU)# #绘制损失对比曲线
plt.figure(0)
plt.plot(all_losses1,label="RNN")
plt.plot(all_losses2,color="red",label="LSTM")
plt.plot(all_losses3,color="orange",label="GRU")
plt.legend(loc="upper left")
# #绘制训练耗时的柱状图
plt.figure(1)
x_data=["RNN","LSTM","GRU"]
y_data=[period1,period2,period3]
plt.bar(range(len(x_data)),y_data,tick_label=x_data)
4.模型评估
def evaluateRNN(line_tensor):#评估函数仅有一个参数,line_tensor代表名字的张量标识#初始化一个隐藏层的张量hidden=rnn.initHidden()#将评估数据line_tensor中的每一个字符之歌传入RNN中for i in range(line_tensor.size()[0]):output,hidden=rnn(line_tensor[i],hidden)#返回整个RNN的输出outputreturn output.squeeze(0)def evaluateLSTM(line_tensor):hidden,c=lstm.initHiddenAndC()for i in range(line_tensor.size()[0]):output,hidden,c=lstm(line_tensor[i],hidden,c)return output.squeeze(0)def evaluateGRU(line_tensor):hidden=gru.initHidden()for i in range(line_tensor.size()[0]):output,hidden=gru(line_tensor[i],hidden)return output.squeeze(0)line="Bai"
line_tensor=lineToTensor(line)rnn_output=evaluateRNN(line_tensor)
lstm_output=evaluateLSTM(line_tensor)
gru_output=evaluateGRU(line_tensor)
print('rnn_output:',rnn_output)
print('lstm_outpt:',lstm_output)
print('gru_output:',gru_output)
5.模型预测
def predict(input_line,evaluate_fn,n_predictions=3):#input_line:代表输入字符串名字,evaluate_fn:代表评估的模型函数,RNN,LSTM,GRU,n_predictions:代表需要取得最有可能的n_predictions个结果#首先将输入的名字打印出来print('\n>%s'%input_line)#注意:所有的预测函数都不能改变模型的参数with torch.no_grad():#使用输入的人名转换成张量,然后调用评估函数得到预测的结果output=evaluate_fn(line_tensor(input_line))#从预测的结果中取出top3个最大值及其索引topv,topi=output.topk(n_predictions,1,True)#初始化结果的列表predictions=[]#遍历3个最可能的结果for i in range(n_predictions):#首先从topv中取出概率值value=topv[0][i].item()#然后从topi中取出索引值category_index=topi[0][i].item()#打印概率值及其对应的真实国家名称print('(%.2f)%s'%(value,all_categories[category_index]))#将结果封装成列表格式,添加到最终的结果列表中predictions.append([value,all_categories[category_index]])return predictionsfor evaluate_fn in [evaluateRNN,evaluateLSTM,evaluateGRU]:print('-'*20)predict('Dovesky',evaluate_fn)predict('Jackson',evaluate_fn)predict('Satoshi',evaluate_fn)
总结
通过案例学会pytorch中的RNN、LSTM和GRU的代码的写法,实现人名分类任务,巩固了分类模型的训练、评估和预测。重点是将字符转为张量后通过RNN、LSTM和GRU中的参数的理解。同时,需要注意的是张量中的数据类型是float不是long。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 生存或毁灭? 国内DIY现状大型调查分析
中午吃饭的时候还和同事谈到了在中关村“攒机”的一些往事,刚才就无意看见了这么一篇全面介绍现在中关村“攒机”市场的文章。想想以前上大学的时候,几乎所有人的台式机都是在中关村攒出来的,为了攒一台价廉物美的机器,抱着几份最新的《电脑报》能琢磨一星期,哪能想到现在…...
2024/5/1 11:26:09 - zzulioj 1059
#include<stdio.h> int main() {int n,i,max0;scanf("%d",&n);while(n>0){if(n>max){maxn;}scanf("%d",&n);}printf("%d",max); return 0; }...
2024/5/1 10:19:11 - 路由与交换-华为eNSP-vlan间路由21.10.11
一、要求PC间能够通信 二、配置 1.PC配置 PC1:10.1.1.1 PC2:10.1.1.2 PC3:20.1.1.1 PC7:20.1.1.2 PC4:30.1.1.1 PC5:30.1.1.2 PC6:10.1.1.1 PC8:40.1.1.2 2.area 1内配置…...
2024/4/21 17:13:56 - 并发编程之LockSupport的 park 方法及线程中断响应
并发编程之LockSupport的 park 方法及线程中断响应前言线程中断相关方法案例演示 interrupt 方法只是设置一个中断状态,而不是使当前线程中断运行sleep 响应中断案例演示sleep方法,捕获中断异常,然后重新设置中断状态LockSupport方法介绍park…...
2024/4/21 17:13:55 - 记一:Java之可视化界面swing设计
在网上找的一些资料~~想存起来~~方便以后查看学习Java Swing图形化编程,我们首先要了解三个最基本的概念:顶层容器,控件,布局。 下面就来介绍一下这三个基本概念 1.顶层容器 什么是顶层容器?当我们使用Java进行图形编程的时候,图在哪里绘制呢?我们需要一个能够提供图形绘…...
2024/4/21 17:13:54 - 记录python程序运行所需时间
import time start time.clock() #当中是你的程序 elapsed (time.clock() - start) print("Time used:",elapsed)...
2024/4/21 17:13:53 - 75. 颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 难点: 1.不使用代…...
2024/4/21 17:13:54 - 用python玩转数据期末测试
1.判断正误:Python中无需定义变量类型,根据“值”确定类型,并以“引用”的方式实现赋值操作。 T 2.判断正误:sum-1是Python的合法标识符。 F 3.判断正误:在循环控制语句中,有break,continue和pa…...
2024/4/21 17:13:51 - 前端js处理后台返回string类型的json对象从而获取里面的值
success : function(resp) {if(resp.code000){var dataresp.datavar json JSON.parse(data)/*var dataJSON.stringify(data)*/console.log("响应成功数据--------"JSON.stringify(json))$(#tt1).html("")$(#tt1).html(json.phone)$(#tt2).html(""…...
2024/4/21 17:13:50 - 圣杯布局、双飞翼布局、flex布局
<!--圣杯布局--> <style type"text/css">body {min-width: 550px;}.header , .footer {width: 100%;height: 60px;line-height: 60px;background: grey;text-align: center;clear: both;}.container {padding: 0 200px;overflow: hidden;}.item {height:…...
2024/4/21 17:13:49 - MySql安装后在服务管理器里边找不到MySql服务项的解决办法
问题: 成功安装MySql后,使用mysql的时候,在CMD中输入net start mysql,提示服务名无效,查看服务列表也找不到mysql服务。 解决办法: 首先打开CMD,切换到MySql安装目录的MySql Server →bin目录…...
2024/4/21 17:13:48 - NameError: name ‘_mysql‘ is not defined
使用sqlalchemy时遇到该问题 解决方案: 安装低版本mysqlclient pip install mysqlclient1.4.6...
2024/4/21 17:13:47 - JAVAWEB-2
servlet得运行原理 servlet属于单例模式。该类只会被创建一次对象。始终调用构造函数一次。 减少创建servlet频率,减少内存的使用。 servlet得体系结构 GenericServlet 编写Servlet需要通过实现Servlet接口来编写Servlet,但是我们每次都必须为Servlet…...
2024/4/21 17:13:46 - HBase中Zookeeper安装部署
安装zookeeper 将走zookeeper的安装包拷贝到hadoop集群中的software中,然后解压到module中 配置完zoo.cfg后注意同步。 本步骤也可以放在前面去执行 接下来再执行启动 bin/zkServer.sh start 成功: 常见报错: 解决方案: 引发这…...
2024/4/21 17:13:45 - 路由与交换-华为eNSP-DHCP中继21.10.27
一、要求 1.保证DHCPserver与192.168.1.0和192.168.2.0能够相互通信 2.配置DHCP server 3.配置DHCP relay 二、配置 1.接口配置 R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip address 12.1.1.1 24 [R1]int g0/0/1 [R1-GigabitEthernet0/0/1]ip address 192.168.1.1 2…...
2024/4/21 17:13:45 - 板绘初学者应该怎么有效的提升自己?
首先敲重点:跑之前先学走,走之前先学着站起来。 够直白了吧? 题主你现在的技术水平就对应着婴儿爬的阶段,那么先试图站立起来,然后再尝试着走,继而往奔跑的梦想上靠拢。如果创作是目标,那么基…...
2024/4/28 3:52:46 - 899452-51-8,Bis-sulfone NHS Ester,化学式:C29H27NO9S2双烷基化标记试剂,对天然二硫化物中的半胱氨酸硫原子具有选择性
英文名称:Bis-sulfone NHS Ester 化学式:C29H27NO9S2 分子量:597.7 CAS:899452-51-8 纯度:95% 储存条件:-20C 运输:环境温度 结构式: 产品简介:双砜NHS酯是一种双…...
2024/4/20 14:03:17 - Leetcode.14. 最长公共前缀---字符串处理
14. 最长公共前缀 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs [“flower”,“flow”,“flight”] 输出:“fl” 示例 2: 输入:…...
2024/4/20 14:03:15 - io流之ObjectInputStream报错(已解决)
问题:今天写序列化io流的时候出现了错误 …EOFException: Exception in thread “main” java.io.StreamCorruptedException: invalid stream header: 7B312C22 来看一下我的代码 经过分析,问题已解决: 看一下正确代码: 代…...
2024/4/24 9:40:29 - 常用命令记录:
1、按照端口杀掉进程 lsof -i :7002|grep -v "PID"|awk {print "kill -9",$2}|sh...
2024/4/20 14:03:13
最新文章
- 笔记-word导出PDF老是更新域导致图片和表格题注发生变化
问题描述:微软word 导出PDF时,老是更新域,导致图片和表格题注否跟着变化 以下是解决方法的具体描述。 目录 一、准备工作二、操作步骤 一、准备工作 1、工具版本:微软 word 2016(其他微软word版本也OK) …...
2024/5/1 12:57:28 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践
腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践 文章目录 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践引言《2023腾讯云容器和函数计算技术实践精选集》整体评价特色亮点分析Serverless与Kubernetes的…...
2024/4/30 17:11:00 - Android Framework学习笔记(2)----系统启动
Android系统的启动流程 启动过程中,用户可控部分是framework的init流程。init是系统中的第一个进程,其它进程都是它的子进程。 启动逻辑源码参照:system/core/init/main.cpp 关键调用顺序:main->FirstStageMain->SetupSel…...
2024/4/30 17:19:30 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57