From aefdf12ae7a8482b681ba7d6bf11f49f17091cf7 Mon Sep 17 00:00:00 2001 From: JYNi16 <49049752+JYNi16@users.noreply.github.com> Date: Sun, 25 Sep 2022 21:55:17 +0800 Subject: [PATCH] Add files via upload --- .../__pycache__/dataset.cpython-39.pyc | Bin 0 -> 1471 bytes .../__pycache__/model.cpython-39.pyc | Bin 0 -> 1423 bytes CNN for 2DIsing model/dataset.py | 36 +++++++++++++++ CNN for 2DIsing model/main.py | 41 ++++++++++++++++++ CNN for 2DIsing model/model.py | 38 ++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 CNN for 2DIsing model/__pycache__/dataset.cpython-39.pyc create mode 100644 CNN for 2DIsing model/__pycache__/model.cpython-39.pyc create mode 100644 CNN for 2DIsing model/dataset.py create mode 100644 CNN for 2DIsing model/main.py create mode 100644 CNN for 2DIsing model/model.py diff --git a/CNN for 2DIsing model/__pycache__/dataset.cpython-39.pyc b/CNN for 2DIsing model/__pycache__/dataset.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29fbd7b1895b488dca9c07c7e3cee919745d4fdd GIT binary patch literal 1471 zcmZuxJ8vU55GJ|YhxM>!pJE^{L`8~h5Xgrhl@TO&unz|Vj$j~F77mEDNK32RUG0&p zz!Id&SENaqA}InpUH%f=RQd~PE;E#U@Fh3G4Cl4v@SCC1cDq4RsLELN5v{gWacsUd#w zkQf+GfX$~M6iKKg36oT^R|Kx1xtd;wxa zmP7zg$PKO84XeEgzwwt;(pz>*Zz&~91{r}QurC`d{LlMkHIG9Z;oenRk8Pl?YE??h zNBQ)^vZ=A$`T1m;m6o2yp5;d6mw+{VA~2SOd0N-mQ2j;p4pi~a^Jjim6ojIqqvz-LK|05+W|2b#C^B!w799(lKH#lhJS!~gUa$8rox6=nQ>Yv z-A2EcUKs0{SrG?%8y$XDN_CY)Sut{eT8l`rMs)DIrVt}lXSFJX zK!?HI2yMV`pLS`$I9u$$h18q$Ar^X1s3Uj|EPSyw!bPufEy>+k)58?n@TBd~(!Zw6}hR<@;TSB~?rTHeJcVQd-F^W%6;7mOb zcvFqN#Y){!L^SfFrt{(c1&)STJbiX}@Nf#jc-IsjoE<&={}dj4^;n#)KZ6t2_`>jw zU!?VLEKIggi{@3|^|P0m!+78N^;8eXw&|9iGLub9jVNfWP;Y^-9T)4*>MS>X?5@Vg ztML!e`sJ*s=DLfzcXo2Bebj>Q960V)x(6POk6`oc9JIE9``~;jZRwSzbL&?+D{Jd- lhV31=+34#H=HFn?%?BVN+M*rc76r}Q>qeBr{Ipn${tHl(Zjk^0 literal 0 HcmV?d00001 diff --git a/CNN for 2DIsing model/__pycache__/model.cpython-39.pyc b/CNN for 2DIsing model/__pycache__/model.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14880c8ed4a38628f884c5ce8e7199944330c5ba GIT binary patch literal 1423 zcmY*ZO>f&q5ZzspBJ~;9>GwyVHbGkftH6oi2VpXiD9s z630-10y2=3|ATbQt-oilJ?Ss>(!QZ2T3v#VZ)S&&v$L~I+U*9z2;;8?zxa&(O~&S^ z!T27xJp?GGc*ah7%sFw9v6%hDl&Aa)rhLs$#MFyD?W^FKFu!VV%Hlw?SxwOus&MYd zp$>F7<#D9zD$>zOV=AB}4p^_gz!zALJCW!80rAb@tqgk$M6;MH7K>Nxh%2tdMHG9> zEMor^^YK;a1uodveO(Orh7R!%H_6$*00k@fgiXav%o%5ecjA*E#JIvTE`te^LE+76 za|RY-K7zk?iFafjejl-686C|jwo%14!4NyA$W|E{s`^G`yNc{U^_ps^rfOXZL~m6y zZ-8Bc-=C9zTQMxF-Cxim7PK*ofItAS+Gd)|!Euu3Iv2OZu-F2aQu+)m{S#$cJRxaON+0Q@7#qEkUR%BEF0kW~HijzdA}P~6 zEu=J*l&kFx^XI$DiM`v-f2{YPI`R0nt3OE29u0>XO&siE@($d19^3{08vKr{?Weg; zj1xb81N*M?9zK17&hV|yj$U(DmvWFL)=K%B{d52Ry+ft-D8mam)&pZS>aMNs(a>}s z9lx}Pd;NZC?EdhxMOgQAsC0H%;?C%$xsHUXoc3J+;~oAsZvfu}wo2RrJMWY&wXiMc3s8&y=Z zVy$&N`o-%nH}zkPUfaBdyv#cU?-9ID@BzVx1RoLH06717s$Zbs=or%_@5cn60D8jQ z#KZA3^C|gC_>4RuYW*THib`oonW1F=zqVKQd3#yN)f>GUwN9R#YAIbqO6UfXUaV?U(l!8s}30GEJL?lB|^UkL)nxKi9Z^%1QBm_sun#>a8#rr|KfANc^ju? z#~vpm-A(PiUeg7|&Dwj^p4L+7`}(f(u3_&G9IeHgdYE aQ1tC`W#7>`vmHQ-M`HU%#A|$uNBlpyD^}Y8 literal 0 HcmV?d00001 diff --git a/CNN for 2DIsing model/dataset.py b/CNN for 2DIsing model/dataset.py new file mode 100644 index 0000000..0ddd639 --- /dev/null +++ b/CNN for 2DIsing model/dataset.py @@ -0,0 +1,36 @@ +import torch +from torchvision import transforms +import os, glob +from torch.utils.data import DataLoader +from torch import nn +import numpy as np +from PIL import Image + + +class train_data(nn.Module): + def __init__(self, data_path, lattice): + self.datapath = [] + self.datapath.extend(glob.glob(os.path.join(data_path, "*.npy"))) + self.L = lattice + + def __getitem__(self, index): + img_path = self.datapath[index] + data = np.load(img_path) + spin_data = np.reshape(data, [-1, self.L, self.L]) + if np.abs(np.sum(spin_data)) < 0.8: + label = 0 + else: + label = 1 + + return spin_data, label + + def __len__(self): + return len(self.datapath) + +if __name__=="__main__": + path = "E:/deeplearning/depp learning for Phys/PCA for 2DIsing model/40_L" + datatrain = train_data(path, 40) + dataloader = DataLoader(datatrain, batch_size=8) + + for x, y in dataloader: + print("x.shape is:", x.shape) \ No newline at end of file diff --git a/CNN for 2DIsing model/main.py b/CNN for 2DIsing model/main.py new file mode 100644 index 0000000..7df37e8 --- /dev/null +++ b/CNN for 2DIsing model/main.py @@ -0,0 +1,41 @@ +from torch.utils.data import DataLoader +import torch +from torch import nn, optim +from model import LeNet +from tqdm import tqdm +from dataset import train_data + +model = LeNet() +BZ = 16 +optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9) +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +path = "E:/deeplearning/depp learning for Phys/PCA for 2DIsing model/40_L" +data = train_data(path, 40) +Data = DataLoader(data, batch_size=BZ) +model.to(device) +lossfunction = nn.CrossEntropyLoss() + +def Acc(y_pred, y_truth): + pred = y_pred.argmax(dim=1) + return (pred.data.cpu() == y_truth.data).sum() + +def train(): + for epoch in range(10): + torch.set_grad_enabled(True) + acc = 0 + loss_all = 0 + step = 0 + for spin_data, label in tqdm(Data): + step += 1 + optimizer.zero_grad() + spin_data = spin_data.to(device, torch.float) + out = model(spin_data) + loss = lossfunction(out, label.to(device, torch.long)) + loss_all += loss + acc += Acc(out, label) + loss.backward() + optimizer.step() + print("epoch is:", epoch, "loss is %.4f" % (loss_all / step), "accuracy is %.4f" % (acc / (step * BZ))) + +if __name__=="__main__": + train() \ No newline at end of file diff --git a/CNN for 2DIsing model/model.py b/CNN for 2DIsing model/model.py new file mode 100644 index 0000000..cc449e9 --- /dev/null +++ b/CNN for 2DIsing model/model.py @@ -0,0 +1,38 @@ +from torch import nn +import torch + +class LeNet(nn.Module): + def __init__(self): + super(LeNet, self).__init__() + self.C1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, stride=1, padding=2) + self.R1 = nn.ReLU() + self.S2 = nn.MaxPool2d(kernel_size=2) + self.C3 = nn.Conv2d(6, 16, 5, 1, 0) + self.R2 = nn.ReLU() + self.S4 = nn.MaxPool2d(2) + self.C5 = nn.Conv2d(16, 120, 5, 1, 0) + self.R3 = nn.ReLU() + self.F6 = nn.Linear(in_features=1920, out_features=84) + self.R4 = nn.ReLU() + self.OUT = nn.Linear(84, 2) + + def forward(self, x): + x = self.C1(x) + x = self.R1(x) + x = self.S2(x) + x = self.C3(x) + x = self.R2(x) + x = self.S4(x) + x = self.C5(x) + x = self.R3(x) + x = x.view(x.size(0), -1) + x = self.F6(x) + x = self.R4(x) + x = self.OUT(x) + return x + +if __name__=="__main__": + model = LeNet() + test = torch.ones(1,1,40,40) + out = model(test) + print("out.shape is:", out.shape) \ No newline at end of file