《模式识别原理、应用及实现》习题答案 第9章_第1页
《模式识别原理、应用及实现》习题答案 第9章_第2页
《模式识别原理、应用及实现》习题答案 第9章_第3页
《模式识别原理、应用及实现》习题答案 第9章_第4页
《模式识别原理、应用及实现》习题答案 第9章_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题9-1:针对一段水管监听的数据,在读取了该特征后,基于LSTM设计模型实现对其管道中流量进行预测。习题9.1答案importtorchimporttorch.nnasnnimporth5pyimportnumpyasnpclassCustomLSTM(nn.Module):

def__init__(self,input_size,hidden_size,num_layers,output_size):

super(CustomLSTM,self).__init__()

self.lstm=nn.LSTM(input_size,hidden_size,num_layers,batch_first=True)

self.fc=nn.Linear(hidden_size,output_size)

defforward(self,x):

h0=torch.zeros(self.num_layers,x.size(0),self.hidden_size).to(x.device)

c0=torch.zeros(self.num_layers,x.size(0),self.hidden_size).to(x.device)

out,_=self.lstm(x,(h0,c0))

out=self.fc(out[:,-1,:])

#Output

returnoutdeftrain_model(model,train_data,num_epochs,learning_rate):

criterion=nn.MSELoss()

optimizer=torch.optim.Adam(model.parameters(),lr=learning_rate)

forepochinrange(num_epochs):

fordataintrain_data:

inputs=torch.tensor(data[:,:-1],dtype=torch.float32)

target=torch.tensor(data[:,-1],dtype=torch.float32)

optimizer.zero_grad()

outputs=model(inputs.unsqueeze(0))

loss=criterion(outputs,target)

loss.backward()

optimizer.step()defpredict(model,input_data):

input_tensor=torch.tensor(input_data,dtype=torch.float32)

output=model(input_tensor.unsqueeze(0))

returnoutput.detach().numpy()defread_hdf5_sensor_data(file_path,flow_val):

f=h5py.File(file_path,"r")

data_DAS=f['DAS'][:]

cut_len=1024

sound_data=data_DAS[:,0]

#sound_data进行分割

sound_data_slice=[sound_data[i:i+cut_len]foriinrange(0,len(sound_data),cut_len)]

#Appendflow_valtoeachchunkasthelastelement

forchunkinsound_data_slice:

chunk.append(flow_val)

returnsound_data_slice#construct_train_data根据文件名和流量,构建数据集defconstruct_train_dataset():

flow_data1=read_hdf5_sensor_data('./0000003093.hdf5',flow_val=264.8)

flow_data2=read_hdf5_sensor_data('./0000003095.hdf5',flow_val=270.7)

flow_data3=read_hdf5_sensor_data('./0000003097.hdf5',flow_val=279.5)

sound_dataset=np.vstack((flow_data1,flow_data2,flow_data3))

returnsound_datasetif__name__=='__main__':

#构建数据集

sound_dataset=construct_train_dataset()

#流量预测准确性阈值

flow_threshold=10

#定义模型的输入和层数以及输出

input_size=1024

hidden_size=64

num_layers=1

output_size=1

model=CustomLSTM(input_size,hidden_size,num_layers,output_size)

#训练模型

num_epochs=100

learning_rate=0.001

train_model(model,sound_dataset,num_epochs,learning_rate)

#保存模型

torch.save(model.state_dict(),'./trained_model.pth')

#验证该模型

total_samples=len(sound_dataset)

misclassification_count=0

fordatainsound_dataset:

inputs=torch.tensor(data[:,:-1],dtype=torch.float32)

target=torch.tensor(data[:,-1],dtype=torch.float32)

output=model(inputs.unsqueeze(0))

ifabs(output.item()-target.item())>flow_threshold:

misclassification_count+=1

misclassification_rate=misclassification_count/total_samples

print(f"误识别率:{misclassification_rate}")习题9.2:试用MTCNN网络对AttributesDataset(CelebA)人脸数据集中的人脸进行定位并显示相应的定位点。参考模型-MTCNN-sample.py参考图像数据库-CelebADataset(.hk)习题9.2答案importmatplotlib.pyplotaspltfrommtcnnimportMTCNNimportcv2importnumpyasnpfromPILimportImage#定义一个函数来绘制检测结果defdraw_faces(image,result_list):data=np.array(image)fori,faceinenumerate(result_list):#获取边界框坐标x,y,w,h=face['box']#绘制边界框cv2.rectangle(data,(x,y),(x+w,y+h),(0,155,255),2)#标记关键点forkeyin['left_eye','right_eye','nose','mouth_left','mouth_right']:cv2.circle(data,(face['keypoints'][key][0],face['keypoints'][key][1]),2,(0,155,255),20)plt.imshow(data)plt.show()#初始化MTCNN模型detector=MTCNN()#加载CelebA数据集中的图像#假设你已经知道CelebA数据集的路径,并且有一个图像的路径image_path=r'E:\14datasets\CelebAMask-HQ\CelebAMask-HQ\CelebA-HQ-img\0.jpg'image=Image.open(image_path)#转换图像为RGB格式image=image.convert('RGB')#将图像转换为numpy数组pixels=np.array(image)#使用MTCNN检测人脸result=detector.detect_faces(pixels)#在图像上绘制检测结果draw_faces(image,result)习题9-3:试用VIT网络对交通道路上的人、车进行识别。模型参考-/google-research/vision_transformer参考数据集-TheUA-DETRACBenchmarkSuite()习题9.3答案importmathfromPILimportImageimportrequestsimportmatplotlib.pyplotaspltimportipywidgetsaswidgetsfromIPython.displayimportdisplay,clear_outputimporttorchfromtorchimportnnfromtorchvision.modelsimportresnet50importtorchvision.transformsasTtorch.set_grad_enabled(False);#COCOclassesCLASSES=['N/A','person','bicycle','car','motorcycle','airplane','bus','train','truck','boat','trafficlight','firehydrant','N/A','stopsign','parkingmeter','bench','bird','cat','dog','horse','sheep','cow','elephant','bear','zebra','giraffe','N/A','backpack','umbrella','N/A','N/A','handbag','tie','suitcase','frisbee','skis','snowboard','sportsball','kite','baseballbat','baseballglove','skateboard','surfboard','tennisracket','bottle','N/A','wineglass','cup','fork','knife','spoon','bowl','banana','apple','sandwich','orange','broccoli','carrot','hotdog','pizza','donut','cake','chair','couch','pottedplant','bed','N/A','diningtable','N/A','N/A','toilet','N/A','tv','laptop','mouse','remote','keyboard','cellphone','microwave','oven','toaster','sink','refrigerator','N/A','book','clock','vase','scissors','teddybear','hairdrier','toothbrush']#colorsforvisualizationCOLORS=[[0.000,0.447,0.741],[0.850,0.325,0.098],[0.929,0.694,0.125],[0.494,0.184,0.556],[0.466,0.674,0.188],[0.301,0.745,0.933]]#standardPyTorchmean-stdinputimagenormalizationtransform=T.Compose([T.Resize(800),T.ToTensor(),T.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])])#foroutputboundingboxpost-processingdefbox_cxcywh_to_xyxy(x):x_c,y_c,w,h=x.unbind(1)b=[(x_c-0.5*w),(y_c-0.5*h),(x_c+0.5*w),(y_c+0.5*h)]returntorch.stack(b,dim=1)defrescale_bboxes(out_bbox,size):img_w,img_h=sizeb=box_cxcywh_to_xyxy(out_bbox)b=b*torch.tensor([img_w,img_h,img_w,img_h],dtype=torch.float32)returnbdefplot_results(pil_img,prob,boxes):plt.figure(figsize=(16,10))plt.imshow(pil_img)ax=plt.gca()colors=COLORS*100forp,(xmin,ymin,xmax,ymax),cinzip(prob,boxes.tolist(),colors):ax.add_patch(plt.Rectangle((xmin,ymin),xmax-xmin,ymax-ymin,fill=False,color=c,linewidth=3))cl=p.argmax()text=f'{CLASSES

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论