ฉันมีปัญหาเกี่ยวกับฝึกค Pytorch กับพวกนางแบบ ฉันพยายามให้รถไฟของฉัน Pytorch นางแบบการใช้ dicom ข้อมูลและ nifti GT อย่างไรก็ตามขนาดของน้ำหนักแฟ้มไร้สาระอย่างเล็กน้อยเพราะนางแบบการฝึกซ้อมองไม่แสดงเหมือนคนทั่วไปแล้ว
ฉันใช้เครือข่ายรุ่น Unet++
ฉันคิดว่ามีปัญหากับข้อมูลวโหลด. แต่ฉันไม่สามารถ fixe มัน...
ฉันจะซาบซึ้งมากถ้าคุณสามารถช่วยผมด้วย
แบบ Raw ของแฟ้มภาพรูปแบบคือ dicom และ GT รูปแบบของภาพคือ nifti
ในของฉัน dataloder
def __getitem__(self, index):
image_path = self.image_paths[index]
image_GT_path = image_path[:8]+'_'+image_path[8:12]+'.nii'
GT_path = self.GT_paths + image_GT_path
ds = dcmread(self.root+image_path)
image = ds.pixel_array.astype(np.float32)
image = torch.from_numpy(image.transpose(0,1)/255)
image = image.unsqueeze(0)
GT = nib.load(GT_path)
GT = GT.get_fdata(dtype=np.float32)
print(GT.shape)
GT = torch.from_numpy(GT.transpose(0,1))
GT = GT.unsqueeze(0)
return image, GT, image_path
และรถไฟนรหัสก็คือ
for epoch in range(self.num_epochs):
self.unet.train(True)
epoch_loss = 0
for i, (images, GT,empty) in enumerate(tqdm(self.train_loader)):
# GT : Ground Truth
images = images.to(self.device)
GT = GT.to(self.device)
# SR : Segmentation Result
SR = self.unet(images)
SR_probs = torch.sigmoid(SR)
SR_flat = SR_probs.view(SR_probs.size(0),-1)
GT_flat = GT.view(GT.size(0),-1)
loss =self.criterion(SR_flat,GT_flat)
# self.criterion=DiceLoss() #BCE not use
# loss = self.criterion(GT,SR_probs)
epoch_loss += loss.item()
train_losses.append(loss.item())
# Backprop + optimize
self.reset_grad()
loss.backward()
self.optimizer.step()