用pytorch搭建简单的语义分割(可训练自己的数据集)
用pytorch搭建简单的语义分割(可训练自己的数据集)
灵感来源:https://blog.csdn.net/weixin_44791964/article/details/102979289
本博客的搭建的网络源于这位博主,不过基于本人电脑配置做了一些网络层数的改动。
整体文件目录下排放:
1、编码器Mobilenet:
这里也有大佬关于Mobilenet的博客Mobilenet的介绍。简单来说Mobilenet利用深度卷积使得数据量大大减少,有助于配置较低的机器,也可以应用到手机上。
import torch
from torch.nn import *
from torch.nn.functional import relu6#第一个卷积块
class Conv_block(Module):def __init__(self,inplanes,outplanes,strides):super(Conv_block, self).__init__()self.zeropad=ZeroPad2d(padding=1)self.conv=Conv2d(inplanes,outplanes,kernel_size=3,stride=strides,padding=0)self.BN=BatchNorm2d(outplanes,momentum=0.1)# self.relu=ReLU()def forward(self,x):x=self.zeropad(x)x=self.conv(x)x=self.BN(x)# x=self.relu(x)x=relu6(x)return x#除了第一个卷积块的后面的深度卷积块
class depthwise_block(Module):def __init__(self,inplanes,outplanes,strides):super(depthwise_block, self).__init__()self.zeropad=ZeroPad2d(padding=1)self.DW=Conv2d(inplanes,inplanes, #深度卷积,输入和输出通道一致kernel_size=3,stride=strides,padding=0,groups=inplanes, #groups=inplanes是实现深度卷积的重点bias=False)self.BN_1=BatchNorm2d(inplanes,momentum=0.1)self.BN_2=BatchNorm2d(outplanes,momentum=0.1)self.conv=Conv2d(inplanes,outplanes,kernel_size=1,stride=1)# self.relu=ReLU()def forward(self,x):x=self.zeropad(x)x=self.DW(x)x=self.BN_1(x)# x=self.relu(x)x = relu6(x)x=self.conv(x)x=self.BN_2(x)# x=self.relu(x)x=relu6(x)return xclass Mobilenet(Module):cfg_filter=[32,64,128,128,256,256] #每个block的inplanes、outplanescfg_stride=[1,2,1,2,1] #每个block的stridescfg_block=[] #初始化后的block集成一个列表layer_data=[] #每个block处理后的outputdef __init__(self):super(Mobilenet, self).__init__()self.conv_block=Conv_block(3,32,2) #第一个conv blockself.block_1=depthwise_block(32,64,1)self.block_2=depthwise_block(64,128,2)self.block_3=depthwise_block(128,128,1)self.block_4=depthwise_block(128,256,2)self.block_5=depthwise_block(256,256,1)def forward(self,inputs):x=inputsx=self.conv_block(x)x=self.block_1(x)x=self.block_2(x)x=self.block_3(x)x=self.block_4(x)x=self.block_5(x)return x#测试encoder网络
if __name__ =="__main__":model=Mobilenet()inputs=torch.randn(1,416,416,3).permute(0,3,1,2)# inputs=torch.randn(1,3,416,416)# layers_list=model(inputs)outputs = model(inputs)print("layers_3 shape:" )# print(layers_list[2].shape)print(outputs.shape)
2、解码器Segnet:
解码器对应着上面的编码器,目的是把获得的特征重新映射到比较搭的图片中的每一个像素点,用于每一个像素点的分类。放大倍数上,和大佬博客不一样的是,本人把最终的size放大到放入网络的size,个人认为这样有助于每个像素的特征得到对应。
import torch
import numpy as np
from torch.nn import *
from torch.nn import functional as F
from mobilenet_ import Mobilenetclass Segnet(Module):cfg_filter=[256,128,64,32]conv_block=[]BN_block=[]def __init__(self,num_classes):super(Segnet, self).__init__()self.zeropad=ZeroPad2d(padding=1)self.conv_1=Conv2d(256,256,kernel_size=3,padding=0)self.conv_2=Conv2d(32,num_classes,kernel_size=3,padding=1)self.BN_1=BatchNorm2d(256,momentum=0.1)self.upsample=Upsample(scale_factor=2)for i in range(len(self.cfg_filter)-1):self.conv_block += [Conv2d(self.cfg_filter[i],self.cfg_filter[i + 1],kernel_size=3,padding=0)]self.BN_block +=[BatchNorm2d(self.cfg_filter[i+1])]self.conv_block=ModuleList(self.conv_block)self.BN_block = ModuleList(self.BN_block)def forward(self,o):#input:52,52,256o=self.zeropad(o)o=self.conv_1(o)o=self.BN_1(o)#input:104,104,256for j in range(3):o=self.upsample(o)o=self.zeropad(o)o=self.conv_block[j](o)o=self.BN_block[j](o)outputs=self.conv_2(o)return outputs#编码器和解码器组合
class Airplanesnet(Module):def __init__(self,classes1,BATCH_SIZE):super(Airplanesnet, self).__init__()self.encoder_part=Mobilenet() #Mobilenet()是从另一个py文件import过来的类self.decoder_part=Segnet(classes1)self.classes=classes1self.batch_size=BATCH_SIZEdef forward(self,input_1):x=self.encoder_part(input_1)x=self.decoder_part(x)return x#测试decoder网络
if __name__ =="__main__":model=Airplanesnet(classes1=2,BATCH_SIZE=1)inputs_1=torch.Tensor(torch.randn(1,3,416,416))outputs_1=model(inputs_1)# outputs=outputs[3]print("outputs shape:" )print(outputs_1.shape)
Segnet最后没有进行softmax,因为training用的是CrossEntropyLoss。
3、训练自己的数据集training:
本博客采用的是VOC2012语义分割两类数据集,并通过自己的代码处理以及数据增强得到看起来为黑色的,**每个像素值非0即1(目标像素值为1)**的label。
代码如下:
import torch
import cv2
import os
import argparse
import numpy as np
from PIL import Image
from torch.nn import *
from torch.optim import Adam
from torch.utils.data import Dataset,DataLoaderfrom segnet_ import AirplanesnetBATCH_SIZE1=1 #训练的batch_size
BATCH_SIZE2=1 #验证的batch_size
NUM_CLASSES=2 #分割的种类数
LR=1e-4 #学习率
EPOCH=20 #迭代次数parser = argparse.ArgumentParser()
parser.add_argument('--gpu',action='store_true',default=True,help='whether use gpu')
parser.add_argument('--train_txt', type=str, default='D:/untitled/.idea/SS_torch/dataset/train.txt', help='about trian')
parser.add_argument('--val_txt', type=str, default='D:/untitled/.idea/SS_torch/dataset/val.txt', help='about validation')opt = parser.parse_args()
print(opt)txt_1 = opt.train_txt
txt_2 = opt.val_txt#自定义数据集的类
class AirplanesDataset(Dataset):def __init__(self,txt_path):super(AirplanesDataset, self).__init__()paths=open("%s" % txt_path,"r")data=[]for lines in paths:path=lines.rstrip('\n')data.append(path)self.data=dataself.len=len(data)def __getitem__(self, index):image=cv2.imread("D:/untitled/.idea/SS_torch/dataset/jpg_right/%s" %self.data[index]+".jpg",-1)label = cv2.imread("D:/untitled/.idea/SS_torch/dataset/png_right/%s"%self.data[index] +".png" , -1)image = cv2.resize(image, dsize=(416, 416))label = cv2.resize(label, dsize=(416, 416))image=torch.from_numpy(image)label=torch.from_numpy(label)image = image / 255.0 #归一化label[label>=0.5]=1 #label被resize后像素值会改变,调整像素值为原来的两类label[label < 0.5] = 0image=image.permute(2,0,1) #调整图像维度,方便载入modelreturn image,labeldef __len__(self):return self.lentrain_dataset = AirplanesDataset(txt_1) # 训练集# 加载训练数据集,并且分好mini-batch
train_loader = DataLoader(dataset=train_dataset,batch_size=BATCH_SIZE1,shuffle=True)criterion = CrossEntropyLoss() # Lossmodel=Airplanesnet(NUM_CLASSES,BATCH_SIZE1)optimizer = Adam(model.parameters(), # 优化器lr=LR)device=torch.device("cuda:0"if torch.cuda.is_available() else "cpu") #检测是否有GPU加速
model.to(device) #网络放入GPU里加速model.load_state_dict(torch.load('D:/untitled/.idea/SS_torch/weights/SS_weight_2.pth'))#train函数
def train(epoch):running_loss=0.0for batch_idx,data in enumerate(train_loader,0): #0是表示从0开始image,label=dataimage,label=image.to(device),label.to(device) #数据放进GPU里optimizer.zero_grad() #优化器参数清零#forword+backward+updateimage=image.type(torch.FloatTensor) #转化数据类型,不转则会报错image=image.to(device)outputs=model(image)loss=criterion(outputs,label.long()) #进行loss计算lll=label.long().cpu().numpy() #把label从GPU放进CPUloss.backward(retain_graph=True) #反向传播(求导)optimizer.step() #优化器更新model权重running_loss+=loss.item() #收集loss的值if batch_idx % 100 ==99:print('[epoch: %d,idex: %2d] loss:%.3f' % (epoch+1,batch_idx+1,running_loss/322)) #训练集的数量,可根据数据集调整runing_loss=0.0 #收集的loss值清零torch.save(model.state_dict(),f='D:/untitled/.idea/SS_torch/weights/SS_weight_3.pth') #保存权重for epoch in range(EPOCH): #迭代次数train(epoch)
4、预测文件predict:
把待测图像放入samples文件夹中,输出结果在outputs文件夹中
predict的重点是:图像从model输出后得到的predict图像经过【第70行pr=predict.argmax(axis=-1)】压缩成一层,每个像素值为种类概率最高的该层的index,再遍历全部像素点与种类index进行匹配,匹配成功则涂上上对应的颜色。
from segnet_ import Airplanesnet
from PIL import Image
import numpy as np
import torch
import argparse
import cv2
import copy
import osparser = argparse.ArgumentParser()
parser.add_argument('--samples', type=str, default='D:/untitled/.idea/SS_torch/samples', help='samples')
parser.add_argument('--outputs', type=str, default='D:/untitled/.idea/SS_torch/outputs', help='outputs')
parser.add_argument('--weights', type=str, default='D:/untitled/.idea/SS_torch/weights/SS_weight_3.pth', help='weights')
opt = parser.parse_args()
print(opt)colors = [[0,0,0],[255,0,0]]
NCLASSES = 2
BATCH_SIZE=1img_way=opt.samples
img_save=opt.outputsdevice=torch.device("cuda:0"if torch.cuda.is_available() else "cpu") #检测是否有GPU加速model=Airplanesnet(NCLASSES,BATCH_SIZE) #初始化modelmodel.load_state_dict(torch.load(opt.weights)) #加载权重model.to(device) #放入GPUfor jpg in os.listdir(r"%s" %img_way):name = jpg[:-4]with torch.no_grad():image=cv2.imread("%s" % img_way + "/" + jpg)old_image = copy.deepcopy(image)old_image = np.array(old_image)orininal_h = image.shape[0] #读取的图像的高orininal_w = image.shape[1] #读取的图像的宽 方便之后还原大小image = cv2.resize(image, dsize=(416, 416)) #调整大小image = image / 255.0 #图像归一化image = torch.from_numpy(image)image = image.permute(2, 0, 1) #显式的调转维度image = torch.unsqueeze(image, dim=0) #改变维度,使得符合model input sizeimage = image.type(torch.FloatTensor) #数据转换,否则报错image = image.to(device) #放入GPU中计算predict = model(image).cpu()# print(predict.shape)predict = torch.squeeze(predict) #[1,1,416,416]---->[1,416,416]predict =predict.permute(1, 2, 0)# print(jpg)predict = predict.numpy()# print(predict.shape)pr=predict.argmax(axis=-1) #把class数量的层压缩为一层,Z轴上的值概率最高的返回该层indexseg_img = np.zeros((416, 416,3)) #创造三层0矩阵,方便进行涂色匹配#进行染色for c in range(NCLASSES):seg_img[:, :, 0] += ((pr[:, :] == c) * (colors[c][0])).astype('uint8')seg_img[:, :, 1] += ((pr[:, :] == c) * (colors[c][1])).astype('uint8')seg_img[:, :, 2] += ((pr[:, :] == c) * (colors[c][2])).astype('uint8')seg_img = cv2.resize(seg_img,(orininal_w,orininal_h))seg_img = np.array(seg_img)# 原图和效果图叠加result = cv2.addWeighted(seg_img, 0.3, old_image, 0.7, 0., old_image, cv2.CV_32F)cv2.imwrite("%s/%s" % (img_save, name) + ".jpg", result)print("%s.jpg ------>done!!!" % name)
预测结果:
5、语义分割mIoU评测指标:
源码:https://www.cnblogs.com/Trevo/p/11795503.html,即把两个矩阵进行mIoU评测,所以我们之后要做的很简单,就是跟predict相似,img经过model后输出predict,然后与label进行匹配。
from segnet_ import Airplanesnet
import numpy as np
import torch
import argparse
import copy
import cv2NCLASSES = 2
BATCH_SIZE=1#文件的加载路径
parser = argparse.ArgumentParser()
parser.add_argument('--val_txt', type=str, default='D:/untitled/.idea/SS_torch/dataset/val.txt', help='about validation')
parser.add_argument('--weights', type=str, default='D:/untitled/.idea/SS_torch/weights/SS_weight_3.pth', help='weights')
opt = parser.parse_args()
print(opt)txt_path = opt.val_txt
weight=opt.weights__all__ = ['SegmentationMetric']class SegmentationMetric(object): #计算mIoU、accuracy的类def __init__(self, numClass):self.numClass = numClassself.confusionMatrix = np.zeros((self.numClass,) * 2)def pixelAccuracy(self):# return all class overall pixel accuracy# acc = (TP + TN) / (TP + TN + FP + TN)acc = np.diag(self.confusionMatrix).sum() / self.confusionMatrix.sum()acc = round(acc,5)return accdef classPixelAccuracy(self):# return each category pixel accuracy(A more accurate way to call it precision)# acc = (TP) / TP + FPclassAcc = np.diag(self.confusionMatrix) / self.confusionMatrix.sum(axis=1)return classAccdef meanPixelAccuracy(self):classAcc = self.classPixelAccuracy()meanAcc = np.nanmean(classAcc)return meanAccdef meanIntersectionOverUnion(self):# Intersection = TP Union = TP + FP + FN# IoU = TP / (TP + FP + FN)intersection = np.diag(self.confusionMatrix)union = np.sum(self.confusionMatrix, axis=1) + np.sum(self.confusionMatrix, axis=0) - np.diag(self.confusionMatrix)IoU = intersection / unionmIoU = np.nanmean(IoU)mIoU =round(mIoU,4)return mIoUdef genConfusionMatrix(self, imgPredict, imgLabel):# remove classes from unlabeled pixels in gt image and predictmask = (imgLabel >= 0) & (imgLabel < self.numClass)label = self.numClass * imgLabel[mask] + imgPredict[mask]count = np.bincount(label, minlength=self.numClass ** 2)confusionMatrix = count.reshape(self.numClass, self.numClass)return confusionMatrixdef Frequency_Weighted_Intersection_over_Union(self):# FWIOU = [(TP+FN)/(TP+FP+TN+FN)] *[TP / (TP + FP + FN)]freq = np.sum(self.confusion_matrix, axis=1) / np.sum(self.confusion_matrix)iu = np.diag(self.confusion_matrix) / (np.sum(self.confusion_matrix, axis=1) + np.sum(self.confusion_matrix, axis=0) -np.diag(self.confusion_matrix))FWIoU = (freq[freq > 0] * iu[freq > 0]).sum()return FWIoUdef addBatch(self, imgPredict, imgLabel):assert imgPredict.shape == imgLabel.shapeself.confusionMatrix += self.genConfusionMatrix(imgPredict, imgLabel)def reset(self):self.confusionMatrix = np.zeros((self.numClass, self.numClass))#读取val.txt中的图片的名称
paths = open("%s" % txt_path, "r")
data = []for lines in paths:path = lines.rstrip('\n')data.append(path)device=torch.device("cuda:0"if torch.cuda.is_available() else "cpu") #检测是否有GPU加速model=Airplanesnet(NCLASSES,BATCH_SIZE) #初始化modelmodel.load_state_dict(torch.load(opt.weights)) #加载权重model.to(device)sum_1 = 0 # 累加每张图片val的accuracy
sum_2 = 0 # 累积每张图片Val的mIoUfor i in range(len(data)):image = cv2.imread("D:/untitled/.idea/SS_torch/dataset/jpg_right/%s" % data[i] + ".jpg", -1)label = cv2.imread("D:/untitled/.idea/SS_torch/dataset/png_right/%s" % data[i] + ".png", -1)orininal_h = image.shape[0] # 读取的图像的高orininal_w = image.shape[1] # 读取的图像的宽image = cv2.resize(image, dsize=(416, 416))label = cv2.resize(label, dsize=(416, 416))label[label >= 0.5] = 1 #label被resize后像素值会改变,调整像素值为原来的两类label[label < 0.5] = 0image = image / 255.0 # 图像归一化image = torch.from_numpy(image)image = image.permute(2, 0, 1) # 显式的调转维度image = torch.unsqueeze(image, dim=0) # 改变维度,使得符合model input sizeimage = image.type(torch.FloatTensor) # 数据转换,否则报错image = image.to(device) # 放入GPU中计算predict = model(image).cpu()predict = torch.squeeze(predict) # [1,1,416,416]---->[1,416,416]predict = predict.permute(1, 2, 0)predict = predict.detach().numpy()prc = predict.argmax(axis=-1)#进行mIoU和accuracy的评测imgPredict =prcimgLabel = labelmetric = SegmentationMetric(2)metric.addBatch(imgPredict, imgLabel)acc = metric.pixelAccuracy()sum_1+=accmIoU = metric.meanIntersectionOverUnion()sum_2+=mIoUprint("%s.jpg :" % data[i])print("accuracy: "+str(acc*100)+" %")print("mIoU: " +str(mIoU))print("-------------------")# 全部图片平均的accuracy和mIoU
sum_1=sum_1/len(data)
sum_2=sum_2/len(data)sum_1 = round(sum_1,5)
sum_2 = round(sum_2,4)print("M accuracy: "+str(sum_1*100)+" %")
print("M mIoU: " +str(sum_2))
评测结果:
6、数据增强:
本语义分割代码采用python的Augmentor库,但是有个缺点就是每次增强只能一张图片,多于一张会让label和image的形变不对应,所以代码有点绕,即读取一张图片,增强后用os把图片移除,再把处理好的label和image分别放入不同文件夹,方便以上一系列操作。
import os
import cv2
import argparse
import Augmentor#文件路径
parser = argparse.ArgumentParser()
parser.add_argument('--Images', type=str, default='D:/untitled/.idea/SS_torch/Augmentor_img', help='true picture')
parser.add_argument('--final', type=str, default='D:/untitled/.idea/SS_torch/Augmentor_img/output', help='final picture')
parser.add_argument('--Masks', type=str, default='D:/untitled/.idea/SS_torch/Augmentor_mask', help='Mask picture')
parser.add_argument('--jpg_right', type=str, default='D:/untitled/.idea/SS_torch/dataset/jpg_right', help='final picture')
parser.add_argument('--png_right', type=str, default='D:/untitled/.idea/SS_torch/dataset/png_right', help='final masks')
parser.add_argument('--transtxt', type=str, default='D:/untitled/.idea/SS_torch/dataset/trans.txt', help='transtxt')
opt = parser.parse_args()
print(opt)txt=opt.transtxtpaths = open("%s" % txt, "r")
data = []for lines in paths:path = lines.rstrip('\n')data.append(path)imgway_1=opt.Images
imgway_2=opt.finalJPG_RIGHT=opt.jpg_right
PNG_RIGHT=opt.png_right#for循环命名需要
n1 = 1
n2 = 1#进行数据增强
for index in range(len(data)):#读取需要增强的image和labelimage = cv2.imread("D:/untitled/.idea/SS_torch/dataset/jpg/%s" % data[index] + ".jpg", -1)mask = cv2.imread("D:/untitled/.idea/SS_torch/dataset/png/%s" % data[index] + ".png", -1)#保存至数据增强指定的文件夹中cv2.imwrite("%s/%s.jpg" % (imgway_1, data[index]) ,image)cv2.imwrite("%s/%s.jpg" % (opt.Masks, data[index]) , mask)#数据增强主体p = Augmentor.Pipeline(opt.Images) #读取imagep.ground_truth(opt.Masks) #读取label,使得label和对应的image进行相同变化的augmentorp.rotate(probability=1, max_left_rotation=5, max_right_rotation=5) #旋转图片,左边最大旋转度,右边最大旋转度p.shear(probability=1,max_shear_left=15,max_shear_right=15) #随机区域形变p.flip_left_right(probability=0.5) #按概率左右翻转p.zoom_random(probability=0.5, percentage_area=0.8) #按概率放大图片p.flip_top_bottom(probability=0.5) #按概率上下翻转p.sample(3) #产生3张图片os.remove("%s/%s.jpg"%(imgway_1,data[index])) #去除原来的img,防止mask和img不匹配os.remove("%s/%s.jpg" % (opt.Masks, data[index])) #去除原来的mask,防止mask和img不匹配#将数据增强后的img和mask进行对应改名并移动到制定的文件夹中
for filename in os.listdir(r"%s" % imgway_2):name = filename[:9]if name =="Augmentor": #该图片是imagename_1 = [] # 把image的数字名称放入列表name_1.append(filename[23:34]) #截取数字+格式img = cv2.imread("%s" % imgway_2 + "/" + filename,-1)name1_1 = name_1[0]name2_1 = name1_1[:-6]+str(n1)+ name1_1[6:] #图片在原来名称基础上改名cv2.imwrite("%s/%s" % (JPG_RIGHT, name2_1 )+".jpg", img)n1+=1if n1==4: #防止改名出现错误n1=1else: #该图片是maskname_2 = [] # 把mask的数字名称放入列表name_2.append(filename[31:42]) #截取数字+格式img_2 = cv2.imread("%s" % imgway_2 + "/" + filename, -1)name1_2 = name_2[0]name2_2 = name1_2[:-6] + str(n2) + name1_2[6:] #图片在原来名称基础上改名cv2.imwrite("%s/%s" % (PNG_RIGHT, name2_2)+".png", img_2)n2 += 1if n2==4: #防止改名出现错误n2=1
7、关于训练集和验证集的txt文件:
import os
import randomval_percent = 0.1
train_percent = 0.9
imagepath = 'dataset/jpg_right'
txtsavepath = 'dataset'
total_img = os.listdir(imagepath)num = len(total_img)
list=range(num)tv = int(num * val_percent) #验证个数
tr = int(num-tv) #训练个数num_trainval = random.sample(list, tv) #随机获取tv个片段num_train = random.sample(list, tr) #随机获取tr个片段ftrain = open('dataset/train.txt', 'w')
fval = open('dataset/val.txt', 'w')for i in range(num):name = total_img[i][:-4] + '\n' #提取名字+转行if i in num_train:ftrain.write(name)else:fval.write(name)print("True")print(i+1)ftrain.close()
fval.close()
总结:
该算法不使用预训练模型,原因有二:第一,难以找到mobilenet的预训练模型,并且还要进行个性化的修改,较麻烦。第二,模型数据量小,训练好的权重大小为4MB左右(图片数为357),从头开始训练的效果也达到及格线。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 用python爬取B站弹幕并绘制词云
最近在B站发现一个弹琵琶的小姐姐,真的是人美歌甜啊啊啊,所以打算爬取她的视频来分析弹幕同时制作词云。 查找相关信息之后发现,爬取B站弹幕的API接口有两个,分别是https://api.bilibili.com/x/v1/dm/list.so?oid=cid http://comment.bilibili.com/+cid+.xml后面需要加上需…...
2024/4/18 10:23:11 - 软件构造课程随笔——5-1【面向可维护性的软件构造思想与原则】
目录一、软件维护和演化二、可维护性的度量三、模块化设计和模块化原则评价模块化效果的指标模块化设计的五个规则耦合和内聚四、OO设计原则:SOLID五、OO设计原则:GRASP 一、软件维护和演化 什么是软件维护 在软件发布后,修改软件以修正错误 和提升性能。 运维工程师 修复代…...
2024/4/25 4:03:40 - Visual Studio Code 装饰器提示“experimentalDecorators”的解决办法
对修饰器的实验支持功能在将来的版本中可能更改。在 "tsconfig" 或 "jsconfig" 中设置 "experimentalDecorators" 选项以删除此警告。点击Visual Studio Code左下角的配置按钮(或者文件>首选项>配置,Windows环境),打开用户设置窗口,在搜…...
2024/4/16 6:48:03 - 剑指offer之数组中重复的数字(C++/Java双重实现)
1.题目描述找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 …...
2024/4/4 20:35:04 - leetcode 深度优先遍历专题python
108. 将有序数组转换为二叉搜索树难度简单505将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,n…...
2024/4/16 6:49:14 - Deep Cross Network
看到了一篇讲的很好的DCN解读,摘录一下https://blog.csdn.net/Dby_freedom/article/details/86502623FM,deepFM,DCN都常用来做推荐场景的点击率预估。主要是针对超大维度的特征,希望通过模型较好的通过原始特征,学习二阶特征或高阶特征。...
2024/4/27 6:16:16 - python基础学习笔记(十一)输入input
input函数实现从控制台输入。...
2024/4/16 6:49:14 - 【学习笔记】C++ 常对象、常数据成员、常成员函数总结
常数据成员常数据成员必须使用初始化列表初始化来初始化,并且不能被更新常数据成员必须初始化 PS:类的数据成员使用初始化列表进行的初始化 才叫初始化,使用构造函数内部的语句初始化叫赋值常对象常对象可以调用常成员函数,不能调用非const成员函数;非const对象,可以调用…...
2024/4/16 6:48:54 - Tensorflow使用手册
导入Tensorflow框架 在安装好tensorflow库之后,使用如下命令导入 import tensorflow as tf # tf作为别名使用Tensorflow编写程序的过程 定义tensorflow常量 C = tf.constant(N,name=C) # N为一个常量的值定义tensorflow变量/张量 f = tf.Variable(f(x,y),name=f) # 可以用来定…...
2024/4/16 6:48:44 - 洛谷:P1654 OSU! (省选/NOI-,数学期望)
题目:分析:下面这个式子:只有在该位为1的情况下,才有必要算增加值。注意E(xi)没有乘。 根据数学期望的性质:相同的方法:代码: #include<bits/stdc++.h> using namespace std; int main() {int num;cin>>num;double dd;//cin>>dd;double d1=0;double…...
2024/4/1 2:07:39 - 密码学&身份鉴别
身份认证类型 实体所知优点: 成本低,实现简单,如:密码、验证码 缺点: 安全性不高,面临的威胁大,如:暴力破解、木马实体所有优点 安全性较高,如:IC卡、门禁卡 缺点 成本较高,会面临损坏和被复制的风险实体特性优点 安全性最高,通常采用生物识别方法进行验证。如:指…...
2024/4/16 6:48:18 - 【博客331】什么是CDN (Content Delivery Network)
内容: 记录入职学习的另一个基础概念—CDN (Content Delivery Network) CDN: 全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络CDN场景: 假设网站现在只有一台服务器,现在有一个人在某处访问服务器,如果该服务器在他旁边,那么访问 速度比较快…...
2024/4/16 6:49:55 - 复杂sql语句编写
1.成绩表分等级select count(1) 人数,ss 等级 from ( select case when score <60 then 不及格 when score <70 and score >60 then 60-70 when score <80 and score >70 then 70-80 when score <90 and score >80 then 80-90 when score <100 and sco…...
2024/4/27 9:10:39 - Dijkstra所得生成树是否是最小生成树
原文反例链接...
2024/4/16 6:47:48 - 互学习域自适应情感分类:Improving Domain-Adapted Sentiment Classification by Deep Adversarial Mutual Learning
通过深度对抗性互学改进领域适应情绪分类AbstractIntroductionRelated WorkDomain adaptationSentiment classificationDeep mutual learningOur ApproachApproach OverviewFeature ExtractionSentiment ClassificationDomain AdaptationIntegration with Mutual LearningE…...
2024/4/20 5:45:27 - 剑指offer 面试题17:打印从1到最大的n位数(java)
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 分析:由于没有给n的范围,所以要考虑到大数问题。 第一种方法(模拟加法):在字符串的数字上模拟加法,定义一个长度为n的字符数组,初始化为’0’, 把字符串表…...
2024/4/16 6:48:08 - [Gym102135][G - Digital characteristic]2017-2018 8th BSUIR Open Programming Contest
description 给定a,b,m,k,产生长度为k的数组,a1=a%m,ai=(ai-1+b)%m(i>1),将这k个数首尾相接形成一个新数,问这个数的f函数的值 ‘’‘solution’’’ 首先f(x)可以等价于询问x%9的值,由于10的幂模9都为1,x%9=(∑(a+bi)%m)(\sum{(a+bi)\%m})%9(∑(a+bi)%m) =(∑a+bi−⌊…...
2024/4/16 6:47:48 - c语言中简易公交一卡通系统的实现
c语言中简易公交一卡通系统的实现 1.基本功能介绍: 系统启动则进入登陆菜单。 根据不同角色的选取来确定是普通用户还是管理员帐户添加新卡 能够添加一张新卡,卡号按照自然数列向下自动产生,而用户名键盘输入,系统创建新卡用户,初始余额为0,状态为使用中。 注销旧卡 由用…...
2024/4/16 6:48:59 - DHTMLET-Cascading Style Sheet 2.0中文手册
链接:https://pan.baidu.com/s/12JalVLIu7VdmB8pYJderqg 提取码:twpo...
2024/4/20 17:27:50 - springboot进阶学习(十六)springboot集成jwt
springboot集成jwt jwt简介 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519),jwt里面包含了一些用户信息,服务器不用再存储或者查询用户信息,减轻服务器压力。 传统Cookie+Session与jwt对比传统Cookie+Session:用户登录成功…...
2024/4/16 6:49:04
最新文章
- 基于Springboot的在线博客网站
基于SpringbootVue的在线博客网站的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 博客标签 博客分类 博客列表 图库相册 后台登录 后台首页 用户管理 博客标…...
2024/5/2 23:02:56 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 【GIS学习笔记】polygon和multipolygon的转换
写得比较全的polygon和multipolygon的介绍: https://www.cnblogs.com/billygisboy/p/17415573.html 从文本文件上看二者的区别就是"type":"Polygon"和"type":"MultiPolygon",以及MultiPolygon多一层[]或()。 …...
2024/4/30 4:11:50 - 动态规划刷题(算法竞赛、蓝桥杯)--饥饿的奶牛(线性DP)
1、题目链接:饥饿的奶牛 - 洛谷 #include <bits/stdc.h> using namespace std; const int N3000010; vector<int> a[N];//可变数组vector存区间 int n,mx,f[N]; int main(){scanf("%d",&n);for(int i1;i<n;i){int x,y;scanf("%…...
2024/5/1 13:50:31 - iOS 利用URL解析技术,实现域名、路径、文件名和文件类型的获取
前言 在iOS开发中,我们经常需要处理URL,例如从网络下载数据、处理网页跳转等。为了更好地理解和操作URL,我们需要解析URL的各个组成部分,包括域名、路径、文件名和文件类型。本文将教你如何利用Swift的URL解析技术,轻…...
2024/5/1 14:11:09 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到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/5/2 9:28:15 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
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/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继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/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含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