質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Pytorch CNNで学習が進まない。

tomo193
tomo193

総合スコア6

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

2069閲覧

投稿2021/03/20 07:56

こちらのサイトを参考にしつつ、cnnを実装したところエラーは起きないものの学習が全くされず、困っています。
Colaboratoryで実行しました。
参照先のサイトと異なるのはcsvファイルを用いた点とネットワークの書き方です。
なにかアドバイスがあれば教えていただきたいです。よろしくお願いします。

python

import time import numpy as np import pandas as pd import torch import torchvision from torch import nn,optim import torch.nn.functional as F from torch.utils.data import Dataset,DataLoader,TensorDataset from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt %matplotlib inline import numpy as np #kaggleのfashion-mnistのcsvファイルをtrain.csv,test.csvとしています train =pd.read_csv('train.csv') y = train['label']#正解ラベルの取り出し x = train.drop('label', axis=1)#正解ラベルの消去 x=x.values y=y.values #画像チェック x=x.reshape(-1,1,28,28) plt.imshow(x[3][0], cmap = 'gray', vmin = 0, vmax = 255, interpolation = 'none') plt.show() x=x/255 train_x,val_x,train_y,val_y=train_test_split(x,y,test_size=0.2,random_state=0) train_x = torch.tensor(train_x, dtype=torch.float32) train_y = torch.tensor(train_y, dtype=torch.int64) val_x= torch.tensor(val_x, dtype=torch.float32) val_y = torch.tensor(val_y, dtype=torch.int64) train_set = torch.utils.data.TensorDataset(train_x,train_y) test_set = torch.utils.data.TensorDataset(val_x, val_y) batch_sizes=128 train_loader = torch.utils.data.DataLoader(train_set, batch_size = batch_sizes, shuffle = False) test_loader = torch.utils.data.DataLoader(test_set, batch_size = batch_sizes, shuffle = False) class net(nn.Module): def __init__(self): super(net, self).__init__() self.conv1 = nn.Conv2d(in_channels = 1, out_channels = 32, kernel_size = 5, stride=1, padding=0) self.conv2 = nn.Conv2d(in_channels = 32, out_channels = 32, kernel_size = 5, stride=1, padding=0) self.conv3 = nn.Conv2d(in_channels = 32, out_channels = 64, kernel_size = 3, stride=1, padding=0) self.conv4 = nn.Conv2d(in_channels = 64, out_channels = 64, kernel_size = 3, stride=1, padding=0) self.pool = nn.MaxPool2d(2, 2) self.dropout1=nn.Dropout(p=0.25) self.dropout2=nn.Dropout(p=0.5) self.fc1 = nn.Linear(64*3*3, 256) self.fc2 = nn.Linear(256, 10) def forward(self, x): x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x=self.pool(x) x=self.dropout1(x) x = F.relu(self.conv3(x)) x = F.relu(self.conv4(x)) x=self.pool(x) x=self.dropout1(x) x = x.view(x.size(0),-1) x = self.fc1(x) x = self.dropout2(x) x = self.fc2(x) return x device = 'cuda' if torch.cuda.is_available() else 'cpu' net = net().to(device) #損失関数 criterion = nn.CrossEntropyLoss() #最適化 optimizer = optim.RMSprop(net.parameters(), lr=0.01, alpha=0.99, eps=1e-08, weight_decay=0, momentum=0, centered=False) num_epochs =30 train_loss_list = [] train_acc_list = [] val_loss_list = [] val_acc_list = [] start = time.time() for epoch in range(num_epochs): train_loss = 0 train_acc = 0 val_loss = 0 val_acc = 0 #train net.train() for i, (images, labels) in enumerate(train_loader): images, labels = images.to(device), labels.to(device) optimizer.zero_grad() outputs = net.forward(images) loss = criterion(outputs, labels) train_loss += loss.item() train_acc += (outputs.max(1)[1] == labels).sum().item() loss.backward() optimizer.step() avg_train_loss = train_loss / len(train_loader.dataset) avg_train_acc = train_acc / len(train_loader.dataset) #val net.eval() with torch.no_grad(): for images, labels in test_loader: images = images.to(device) labels = labels.to(device) outputs = net.forward(images) loss = criterion(outputs, labels) val_loss += loss.item() val_acc += (outputs.max(1)[1] == labels).sum().item() avg_val_loss = val_loss / len(test_loader.dataset) avg_val_acc = val_acc / len(test_loader.dataset) print ('Epoch [{}/{}], Loss: {loss:.4f}, val_loss: {val_loss:.4f}, val_acc: {val_acc:.4f}' .format(epoch+1, num_epochs, i+1, loss=avg_train_loss, val_loss=avg_val_loss, val_acc=avg_val_acc)) train_loss_list.append(avg_train_loss) train_acc_list.append(avg_train_acc) val_loss_list.append(avg_val_loss) val_acc_list.append(avg_val_acc) print(time.time() - start) plt.plot(train_acc_list, label='Training loss') plt.plot(val_acc_list, label='Validation loss') plt.legend(); val_acc_list[-1]

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。