#問題
PyTorchを用いたMNISTの文字画像認識のプログラムを以下の様に組み立てました。そのコードをTerminalで実行しようとするも、なかなかプログラムの結果が上の様な状態のまま、何十分と待っても待っても表示がありません。似たものとしてワインの分類を深層学習を使って解析するプログラムを同様に作った時は数秒でプログラムが実行されたので、何がいけなくて動いてくれないのだろう…といった状態に陥っています。随分と曖昧な質問ではありますが、どこかお力添え頂けるところが御座いましたら、宜しくお願い申し上げます。
#該当コード
Python
1import torch 2from torch.autograd import Variable 3import torch.nn 4import torch.nn.functional 5import torch.optim 6from torch.utils.data import TensorDataset, DataLoader 7 8from sklearn import datasets 9from sklearn.datasets import load_digits, fetch_openml 10from sklearn.model_selection import train_test_split 11 12import pandas as pd 13 14from matplotlib import pyplot as plt 15from matplotlib import cm 16 17import numpy as np 18 19mnist=datasets.fetch_openml('mnist_784', version=1) 20mnist_data=mnist.data/255 21mnist_pre_labels=mnist.target 22mnist_labels=mnist_pre_labels.astype(np.float64) 23 24train_X, test_X, train_Y, test_Y=train_test_split(mnist_data, mnist_labels, train_size=5000, test_size=500) 25train_X=torch.from_numpy(train_X).float() 26train_Y=torch.from_numpy(train_Y).long() 27test_X=torch.from_numpy(test_X).float() 28test_Y=torch.from_numpy(test_Y).long() 29 30train=TensorDataset(train_X, train_Y) 31batches=DataLoader(train, batch_size=16, shuffle=True) 32 33class Net(torch.nn.Module): 34 def __init__(self): 35 super(Net, self).__init__() 36 self.fc1=torch.nn.Linear(784,256) 37 self.fc2=torch.nn.Linear(256,256) 38 self.fc3=torch.nn.Linear(256,256) 39 self.fc4=torch.nn.Linear(256,128) 40 self.fc5=torch.nn.Linear(128,128) 41 self.fc6=torch.nn.Linear(128,10) 42 43 def forward(self, x): 44 x=torch.nn.functional.relu(self.fc1(x)) 45 x=torch.nn.functional.relu(self.fc2(x)) 46 x=torch.nn.functional.relu(self.fc3(x)) 47 x=torch.nn.functional.relu(self.fc4(x)) 48 x=torch.nn.functional.relu(self.fc5(x)) 49 x=torch.nn.functional.dropout(x, training=self.training) 50 x=self.fc6(x) 51 return torch.nn.functional.log_softmax(x, dim=1) 52 53net=Net() 54 55CEL=torch.nn.CrossEntropyLoss() 56optimiser=torch.optim.SGD(net.parameters(), lr=0.01) 57for epoch in range(1000): 58 total_loss=0 59 for train_x, train_y in batches: 60 train_x, train_y=Variable(train_X), Variable(train_Y) 61 optimiser.zero_grad() 62 output=net(train_x) 63 loss=CEL(output, train_y) 64 loss.backward() 65 optimiser.step() 66 total_loss+=loss.data.item() 67 if (epoch+1)%100==0: 68 print(epoch+1, total_loss)
#環境
WiFiには正常に接続されています。
Python 3.8.3
Model: MacBook Pro13
Version: macOS 10.15.7
回答1件
あなたの回答
tips
プレビュー