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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

PyTorch

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

Python

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

受付中

Pytorchを用いたニューラルネットワークによる分類

退会済みユーザー

退会済みユーザー

総合スコア0

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

PyTorch

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

Python

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

2回答

-1評価

0クリップ

370閲覧

投稿2021/11/14 08:06

編集2022/01/12 10:55

前提・実現したいこと

Pytorch初心者です。ニューラルネットワークを用いて入力したデータを1と0に分類し、その入力した値と一緒に出力する、というプログラムを作成したいと考えています。

現在入力した値から0と1に分類し出力するところまでは作成したのですが、エラーが出てしまいどのように対処すれば良いのかわからない状態です。

Anacondaにpytorch19という環境を作っており、そこで実行を行いました。また、今回作成したニューラルネットワークのプログラムNN_classification.pyは Tokyo/PycharmProjectsに入っていて、環境のpytorch19もこのTokyoファイル内のanaconda3に入っています。
イメージ説明

発生した問題、エラーメッセージ

Pycharm Community Edition にて作成したニューラルネットワークのプログラムを実行したところ、以下のようなエラーが出てしまいます。

Python

C:\Users\Tokyo\anaconda3\envs\pytorch19\python.exe C:/Users/Tokyo/PycharmProjects/Su/NN_classification.py Traceback (most recent call last): File "C:/Users/Tokyo/PycharmProjects/Su/NN_classification.py", line 2, in <module> import torch File "C:\Users\Tokyo\anaconda3\envs\pytorch19\lib\site-packages\torch\__init__.py", line 629, in <module> from .functional import * # noqa: F403 File "C:\Users\Tokyo\anaconda3\envs\pytorch19\lib\site-packages\torch\functional.py", line 6, in <module> import torch.nn.functional as F File "C:\Users\Tokyo\anaconda3\envs\pytorch19\lib\site-packages\torch\nn\__init__.py", line 50 ^ SyntaxError: unexpected EOF while parsing Process finished with exit code 1

ターミナルにて以下のコマンドを入力してもこのようなエラーが出る状態です。

Pytorch

PS C:\Users\Tokyo\PycharmProjects\Su> import torch import : 用語 'import' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パ スが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1 + import torch + ~~~~~~ + CategoryInfo : ObjectNotFound: (import:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS C:\Users\Tokyo\PycharmProjects\SuNN> print(torch.__version__) torch.__version__ : 用語 'torch.__version__' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述され ていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:7 + print(torch.__version__) + ~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (torch.__version__:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

該当のソースコード

Pytorch

import time import torch import pandas as pd import numpy as np import csv # データサイズ(I行J列) DATA_SIZE_I = 11 DATA_SIZE_J = 11 # ファイルパス TRAIN_CSV_PATH = r"C:\Users\Tokyo.vscode\su\train_data_noise.csv" VALIDATION_CSV_PATH = r"C:\Users\Tokyo.vscode\su\validation_data_noise.csv" TEST_CSV_PATH = r"C:\Users\Tokyo.vscode\su\test_data_noise.csv" OUTPUT_CSV_PATH = 'result_noise.csv' LOSS_CSV_PATH = '.result_losses.csv' # ハイパーパラメータ EPOCHS = 10 BATCH = 100 lr = 1.0e-4 NODE_NUM = DATA_SIZE_I*DATA_SIZE_J class BGS(torch.utils.data.Dataset): def __init__(self, csv_path): df = pd.read_csv(csv_path, header=0, dtype='float') data = df.iloc[:, 1:].values data = data_transform(data) self.data = torch.tensor(data, dtype=torch.float32) labels = df.iloc[:, 0].values self.labels = torch.tensor(labels, dtype=torch.long) def __len__(self): return len(self.data) def __getitem__(self, index): return self.data[index], self.labels[index] class Net(torch.nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = torch.nn.Linear(DATA_SIZE_I*DATA_SIZE_J, NODE_NUM*5) self.fc2 = torch.nn.Linear(NODE_NUM*5, NODE_NUM) self.fc3 = torch.nn.Linear(NODE_NUM, 2) def forward(self, x): x = self.fc1(x) x = torch.nn.functional.relu(x) x = self.fc2(x) x = torch.nn.functional.relu(x) x = self.fc3(x) x = torch.nn.functional.softmax(x, dim=1) return x def data_transform(x): return (x - np.mean(x, axis=1, keepdims=True)) / np.std(x, axis=1, ddof=1, keepdims=True) # 学習用関数 def train(train_loader, model, optimizer, criterion, device, num_epochs, epoch, losses): model.train() # モデルを学習モードに変更 train_loss = 0 train_acc = 0 i = 0 for i, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() # 勾配を初期化 output = model(data) # 順伝播の計算 loss = criterion(output, target) # 誤差を計算 train_loss += float(loss.item()) preds = torch.max(output, 1)[1] train_acc += torch.sum(preds == target).item() / len(target) loss.backward() # 誤差を逆伝播させる optimizer.step() # 重みを更新する losses.append(train_loss) print('#train_epoch: [{}/{}], Loss: {}, acc: {}'.format(epoch + 1, num_epochs, train_loss / (i+1), train_acc / (i+1)), end=' ') def validation(validation_loader, model, criterion, device, num_epochs, epoch, losses): model.eval() # モデルを推論モードに変更 val_loss = 0 val_acc = 0 i = 0 with torch.no_grad(): for i, (data, target) in enumerate(validation_loader): data, target = data.to(device), target.to(device) output = model(data) loss = criterion(output, target) # 誤差を計算 val_loss += float(loss.item()) preds = torch.max(output, 1)[1] val_acc += torch.sum(preds == target).item() / len(target) losses.append(val_loss) print('#val_epoch: [{}/{}], Loss: {}, acc: {}'.format(epoch + 1, num_epochs, val_loss / (i+1), val_acc / (i+1))) def test(test_loader, model, device): model.eval() # モデルを推論モードに変更 with torch.no_grad(): for i, (data, target) in enumerate(test_loader): data, target = data.to(device), target.to(device) output = model(data) preds = torch.max(output, 1)[1] accuracy = torch.sum(preds == target).item() / len(target) target, preds = target.cpu().numpy(), preds.cpu().numpy() target, preds = pd.DataFrame(target), pd.DataFrame(preds) df = pd.concat([target, preds], axis=1) with open(OUTPUT_CSV_PATH, 'w', newline='') as file: writer = csv.writer(file) writer.writerow(['accuracy', '{}'.format(accuracy)]) writer.writerow(['labels', 'predict']) df.to_csv(OUTPUT_CSV_PATH, mode='a', header=False, index=False) def main(): # 1. GPUの設定(PyTorchでは明示的に指定する必要がある) device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') print(device) # 3. データセットを取得 train_data = BGS(TRAIN_CSV_PATH) validation_data = BGS(VALIDATION_CSV_PATH) test_data = BGS(TEST_CSV_PATH) # 4. DataLoaderの作成 train_loader = torch.utils.data.DataLoader(train_data, batch_size=BATCH, shuffle=True, num_workers=2) validation_loader = torch.utils.data.DataLoader(validation_data, batch_size=BATCH, shuffle=False) test_loader = torch.utils.data.DataLoader(test_data, batch_size=test_data.__len__(), shuffle=False) # 5. モデル作成 torch.manual_seed(0) model = Net().to(device) # 6. 損失関数を定義 criterion = torch.nn.CrossEntropyLoss() # 7. 最適化手法を定義 optimizer = torch.optim.Adam(model.parameters(), lr=lr) # 8. 出力用ファイル作成 train_losses = [] # train_accuracy = [] validation_losses = [] # validation_accuracy = [] # 9. 学習(エポック終了時点ごとにテスト用データで評価) start = time.time() for epoch in range(EPOCHS): train(train_loader, model, optimizer, criterion, device, EPOCHS, epoch, train_losses) validation(validation_loader, model, criterion, device, EPOCHS, epoch, validation_losses) test(test_loader, model, device) process_time = time.time() - start print("process_time:{0}".format(process_time) + "[sec]") # train_losses, validation_losses = pd.DataFrame(train_losses), pd.DataFrame(validation_losses) # df_losses = pd.concat([train_losses/1000, validation_losses/100], axis=1) # df_losses.to_csv(LOSS_CSV_PATH, mode='a', header=False, index=False) if __name__ == '__main__': main()

エラーがありそうなコードも以下に載せさせていただきます。

Pytorch

# C:\Users\Tokyo\anaconda3\envs\pytorch19\lib\site-packages\torch\__init__.py . . . ################################################################################ # Import interface functions defined in Python ################################################################################ # needs to be after the above ATen bindings so we can overwrite from Python side from .functional import * # noqa: F403 . . .

Pytorch

# C:\Users\Tokyo\anaconda3\envs\pytorch19\lib\site-packages\torch\functional.py from typing import ( Tuple, Optional, Union, Any, Sequence, TYPE_CHECKING ) import torch import torch.nn.functional as F from torch.types import _size from ._lowrank import svd_lowrank, pca_lowrank from .overrides import ( has_torch_function, has_torch_function_unary, has_torch_function_variadic, handle_torch_function) from ._jit_internal import boolean_dispatch, List from ._jit_internal import _overload as overload from torch._autograd_functions import _LU . . .

Pytorch

# C:\Users\Tokyo\anaconda3\envs\pytorch19\lib\site-packages\torch\nn\__init__.py . . def functional():

行ったこと、補足

Pythonを起動し、ニューラルネットワークのプログラムでtorch.nn.functionalをそのまま書いていたため as F の部分を削除し import torch を入力したところ、以下のようなエラーが出ました。

Pytorch

>>> import torch Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\Tokyo\anaconda3\envs\pytorch19\lib\site-packages\torch\__init__.py", line 229, in <module> __all__ += [name for name in dir(_C) NameError: name '_C' is not defined

anacondaで行っていることは分かっているのですが、バージョンなどの確認方法も分からない状態です。情報が少なく大変申し訳ありませんが、ご助言をいただけると幸いです。宜しくお願い致します。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

PyTorch

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

Python

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