#maskTst=np.fft.fftshift(np.fft.fftshift(maskTst,1),2) maskTst = np.squeeze(np.transpose(maskTst[0 + st:NF + st, :, :], [0, 1, 2])) maskTst = np.fft.fftshift(np.fft.fftshift(maskTst, 1), 2) #maskTst=np.tile(maskTst[...,np.newaxis],(1,1,1,2)) maskTst = np.reshape(maskTst, (NF, nx * nx)) res = np.zeros((NF, nbasis, nx * nx)) for k in range(NF): tmp3 = np.tile(maskTst[k], (nbasis, 1)) #*tmp2 res[k] = np.diag(V[:, k]) @ tmp3 #res=np.reshape(res,(int(NF/batch_sz),batch_sz,nbasis,nx*nx)) #%% make them pytorch tensors B = torch.tensor(sf.c2r(kdata1)) atbT = torch.tensor(sf.c2r(atbV)) csmT = torch.tensor(sf.c2r(csmTrn)) maskT = torch.tensor(res).to(dtype=torch.float16) maskT1 = torch.tensor(maskTst) VT = torch.tensor(V) sT = torch.tensor(sbasis) W = torch.tensor(W) #%% take them to gpu #B=B.to(gpu) #atbT=atbT.to(gpu) csmT = csmT.to(gpu) #maskT=maskT.to(dtype=torch.float16) maskT1 = maskT1.to(gpu, dtype=torch.float16) VT = VT.to(gpu)
kdata = kdata / np.max(np.abs(kdata)) msk = np.zeros((NF, nx * nx), dtype='float32') for k in range(NF): indx = np.squeeze(S[k, 0]) msk[k, indx - 1] = 1 maskTst = np.reshape(msk, (NF, nx, nx)) #maskTst=np.transpose(maskTst,(0,2,1)) maskTst = maskTst[0 + st:NF + st] maskTst = np.fft.fftshift(np.fft.fftshift(maskTst, 1), 2) maskTst = np.reshape(maskTst, (NF, nx * nx)) #res=np.reshape(res,(int(NF/batch_sz),batch_sz,nbasis,nx*nx)) #%% make them pytorch tensors kdataT = torch.tensor(sf.c2r(kdata)) csmT = torch.tensor(sf.c2r(csm)) maskT = torch.tensor(maskTst) VT = torch.tensor(V) sT = torch.tensor(sb) #W=torch.tensor(W) #Nv=torch.tensor(nav) #%% take them to gpu csmT = csmT.to(gpu) maskT = maskT.to(gpu, dtype=torch.float32) VT = VT.to(gpu) # sT=sT.to(gpu) #Nv=Nv.to(gpu) #%%
atbV = atbV * nx atbV = np.transpose(atbV, [1, 0]) atbV = np.reshape(atbV, (nbasis, nx, nx)) atbV = atbV.astype(np.complex64) #atbV=np.fft.fftshift(np.fft.fftshift(atbV,1),2) atbV = np.transpose(atbV, [0, 2, 1]) del tmp, tmp1, tmp2, tmp3 with h5.File(directory + 'S_mask.h5', 'r') as f: maskTst = np.asarray(f['S']) #maskTst=np.fft.fftshift(np.fft.fftshift(maskTst,1),2) maskTst = np.squeeze(np.transpose(maskTst[0 + st:NF + st, :, :], [0, 2, 1])) #%% make them pytorch tensors atbT = torch.tensor(sf.c2r(atbV)) csmT = torch.tensor(sf.c2r(csmTrn)) maskT = torch.tensor(np.tile(maskTst[..., np.newaxis], (1, 1, 1, 2))) VT = torch.tensor(V) sT = torch.tensor(sbasis) W = torch.tensor(W) #%% take them to gpu atbT = atbT.to(gpu) csmT = csmT.to(gpu) maskT = maskT.to(gpu, dtype) VT = VT.to(gpu) W = W.to(gpu, dtype) sT = sT.to(gpu) #%% unet = UnetClass() modelDir = directory1 + 'wts-' + str(chkPoint) + '.pt'
res2=np.zeros((nx,nx,NF),dtype=complex) for i in range(NF): for j in range(nch): tmp=kdata2[j,i,:] tmp=np.expand_dims(tmp,axis=1) tmp=np.reshape(tmp,(nx,nx)) tmp1=tmp1+np.fft.ifft2(tmp)*np.conj(csm[j]) res2[:,:,i]=tmp1 tmp1=np.zeros((nx,nx)) res2=res2*nx res2=np.transpose(res2,[2,1,0]) res2=np.fft.fftshift(np.fft.fftshift(res2,1),2) #%% ######################################################## y1=torch.tensor(sf.c2r(res1)) y2=torch.tensor(sf.c2r(res2)) y1=y1.to(gpu) y2=y2.to(gpu) y1=y1.permute(0,3,1,2) y2=y2.permute(0,3,1,2) directory='/Users/ahhmed/pytorch_sense' unet=UnetClass() unet=unet.to(gpu) optimizer=torch.optim.Adam(unet.parameters(),lr=1e-3) def lossFun(pred,org): loss=torch.mean(torch.abs(pred-org))
""" import numpy as np import matplotlib.pyplot as plt import torch import supportingFun as sf gpu=torch.device('cuda:0') org=np.load('data.npz')['org'] csm=np.load('data.npz')['csm'] mask=np.load('data.npz')['mask'] #%% make them pytorch tensors orgT=torch.tensor(sf.c2r(org)) csmT=torch.tensor(sf.c2r(csm)) maskT=torch.tensor(np.tile(mask[...,np.newaxis],(1,1,2))) #%% take them to gpu orgT=orgT.to(gpu) csmT=csmT.to(gpu) maskT=maskT.to(gpu) #%% make A and At operators def pt_A(orgT,csmT,maskT): tmp=sf.pt_cpx_multipy(orgT,csmT) tmp=sf.pt_fft2c(tmp) bT=maskT*tmp return bT
############################################################ with h5.File(directory+'S_mask.h5', 'r') as f: maskTst=np.asarray(f['S']) #maskTst=np.fft.fftshift(np.fft.fftshift(maskTst,1),2) maskTst=np.squeeze(np.transpose(maskTst[0+st:NF+st,:,:],[0,1,2])) #maskTst=np.tile(maskTst[...,np.newaxis],(1,1,1,2)) maskTst=np.reshape(maskTst,(NF,nx*nx)) res=np.zeros((NF,nbasis,nx*nx)) for k in range(NF): tmp3=np.tile(maskTst[k],(nbasis,1))#*tmp2 res[k]=np.diag(V[:,k])@tmp3 res=np.reshape(res,(int(NF/batch_sz),batch_sz,nbasis,nx*nx)) #%% make them pytorch tensors B=torch.tensor(sf.c2r(kdata)) #atbT=torch.tensor(sf.c2r(atbV)) csmT=torch.tensor(sf.c2r(csmTrn)) maskT=torch.tensor(res).to(dtype=torch.float16) VT=torch.tensor(V) sT=torch.tensor(sbasis) W=torch.tensor(W) #%% take them to gpu B=B.to(gpu) #atbT=atbT.to(gpu) csmT=csmT.to(gpu) #maskT=maskT.to(gpu,dtype=torch.float16) VT=VT.to(gpu) W=W.to(gpu,dtype) sT=sT.to(gpu)
atb = atb.astype(np.complex64) atb = np.squeeze(np.transpose(atb[0:NF, :, :], [0, 2, 1])) with h5.File(directory + 'S_mask.h5', 'r') as f: maskTst = np.asarray(f['S']) maskTst = np.squeeze(maskTst[0:NF, :, :]) #org=np.load('data.npz')['org'] #csm=np.load('data.npz')['csm'] #mask=np.load('data.npz')['mask'] csm = csmTrn mask = maskTst #%% make them pytorch tensors orgT = torch.tensor(sf.c2r(atb)) csmT = torch.tensor(sf.c2r(csm)) maskT = torch.tensor(np.tile(mask[..., np.newaxis], (1, 1, 2))) #%% take them to gpu orgT = orgT.to(gpu) csmT = csmT.to(gpu) maskT = maskT.to(gpu) #%% make A and At operators def pt_A(orgT, csmT, maskT): tmp = sf.pt_cpx_multipy(orgT, csmT) tmp = sf.pt_fft2c(tmp) bT = maskT * tmp return bT