タグ付けされた質問 「pytorch」

PyTorchは、動的計算グラフを実装する深層学習フレームワークです。これにより、ニューラルネットワークの動作をオンザフライで変更し、後方自動微分を実行できます。

8
「ビュー」メソッドはPyTorchでどのように機能しますか?
view()次のコードスニペットのメソッドについて混乱しています。 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2,2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16*5*5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = x.view(-1, 16*5*5) x = F.relu(self.fc1(x)) x = …
205 python  memory  pytorch  torch  tensor 

5
PyTorchでトレーニング済みモデルを保存する最良の方法は?
PyTorchでトレーニング済みモデルを保存する別の方法を探していました。これまでのところ、2つの代替案を見つけました。 torch.save()はモデルを保存し、torch.load()はモデルをロードします。 model.state_dict()はトレーニング済みモデルを保存し、model.load_state_dict()は保存されたモデルをロードします。 私はこの議論に出くわしました。アプローチ2はアプローチ1よりも推奨されます。 私の質問は、なぜ2番目のアプローチが好ましいのかということです。それはtorch.nnモジュールがこれら2つの機能を持っているからであり、それらを使用することをお勧めしますか?


10
Pytorchのモデルの概要
次のように、Kerasのmodel.summary()メソッドのようにPyTorchでモデルの概要を印刷できますか? Model Summary: ____________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ==================================================================================================== input_1 (InputLayer) (None, 1, 15, 27) 0 ____________________________________________________________________________________________________ convolution2d_1 (Convolution2D) (None, 8, 15, 27) 872 input_1[0][0] ____________________________________________________________________________________________________ maxpooling2d_1 (MaxPooling2D) (None, 8, 7, 27) 0 convolution2d_1[0][0] ____________________________________________________________________________________________________ flatten_1 (Flatten) (None, 1512) 0 maxpooling2d_1[0][0] ____________________________________________________________________________________________________ dense_1 (Dense) (None, 1) …
125 python  pytorch 


4
Pytorch、勾配の引数は何ですか
私はPyTorchのドキュメントを読んでいて、彼らが書く例を見つけました gradients = torch.FloatTensor([0.1, 1.0, 0.0001]) y.backward(gradients) print(x.grad) ここで、xは初期変数であり、そこからyが作成されました(3ベクトル)。問題は、勾配テンソルの0.1、1.0、0.0001引数は何ですか?ドキュメントについては、あまり明確ではありません。


5
なぜシーケンスをpytorchに「パック」するのですか?
rnnの可変長シーケンス入力にパッキングを使用する方法を複製しようとしましたが、最初にシーケンスを「パック」する必要がある理由を理解する必要があると思います。 なぜそれらを「パッド」する必要があるのか​​理解していますが、なぜ「パッキング」(スルーpack_padded_sequence)が必要なのですか? 高レベルの説明をいただければ幸いです。

6
PyTorch-contiguous()
私はgithub (リンク)でLSTM言語モデルのこの例を調べていました。それが一般的に何をするかは私にはかなり明白です。しかしcontiguous()、コード内で数回発生する呼び出しが何をするのかを理解するのにまだ苦労しています。 たとえば、コードの74/75行目に、LSTMの入力シーケンスとターゲットシーケンスが作成されます。データ(に格納されているids)は2次元であり、最初の次元はバッチサイズです。 for i in range(0, ids.size(1) - seq_length, seq_length): # Get batch inputs and targets inputs = Variable(ids[:, i:i+seq_length]) targets = Variable(ids[:, (i+1):(i+1)+seq_length].contiguous()) したがって、簡単な例として、バッチサイズ1およびseq_length10を使用するinputsと、targets次のようになります。 inputs Variable containing: 0 1 2 3 4 5 6 7 8 9 [torch.LongTensor of size 1x10] targets Variable containing: 1 2 3 4 …

3
pytorchでの形状変更とビューの違いは何ですか?
numpyではndarray.reshape()、配列の再形成に使用します。 pytorchでは、人々torch.view(...)が同じ目的で使用していることに気づきましたが、同時に、torch.reshape(...)既存のものもあります。 だから私はそれらの違いは何ですか、そして私はそれらのどちらかをいつ使うべきか疑問に思っていますか?
83 pytorch 

2
pytorchモデルのパラメーターがリーフではなく、計算グラフにあるのはなぜですか?
ニューラルネットモデルのパラメーターを更新/変更し、更新されたニューラルネットのフォワードパスを計算グラフに含めようとしています(変更/更新の数に関係なく)。 私はこのアイデアを試しましたが、行うたびに、pytorchは更新されたテンソル(モデル内)をリーフに設定します。これにより、グラデーションを受け取りたいネットワークへのグラデーションのフローが強制終了されます。葉のノードは計算グラフの一部ではないため、グラデーションのフローが停止します(真に葉ではないため)。 私は複数のことを試しましたが、何も機能しないようです。グラデーションが必要なネットワークのグラデーションを出力する自己完結型のダミーコードを作成しました。 import torch import torch.nn as nn import copy from collections import OrderedDict # img = torch.randn([8,3,32,32]) # targets = torch.LongTensor([1, 2, 0, 6, 2, 9, 4, 9]) # img = torch.randn([1,3,32,32]) # targets = torch.LongTensor([1]) x = torch.randn(1) target = 12.0*x**2 criterion = nn.CrossEntropyLoss() #loss_net = nn.Sequential(OrderedDict([('conv0',nn.Conv2d(in_channels=3,out_channels=10,kernel_size=32))])) …

1
RuntimeError:入力タイプ(torch.FloatTensor)と重みタイプ(torch.cuda.FloatTensor)は同じである必要があります
次のように次のCNNをトレーニングしようとしていますが、.cuda()に関して同じエラーが発生し続け、それを修正する方法がわかりません。ここに私のコードのチャンクがあります。 import matplotlib.pyplot as plt import numpy as np import torch from torch import nn from torch import optim import torch.nn.functional as F import torchvision from torchvision import datasets, transforms, models from torch.utils.data.sampler import SubsetRandomSampler data_dir = "/home/ubuntu/ML2/ExamII/train2/" valid_size = .2 # Normalize the test and train sets with torchvision …

1
エポックからエポックに成長するpytorchの高IOデータセットから読み取る方法
私はTensorflowを使用していますが、通常はディープラーニングフレームワークによって異なるユーザー向けのドキュメントを作成しています。 ローカルファイルシステム(TB +)に適合しないデータセットを操作するとき、リモートデータストアからデータをサンプリングし、サンプルをローカルでTensorflow標準tfrecords形式に書き込みます。 トレーニングの最初のエポックの間、私は数個の値をサンプリングしただけなので、ローカルデータのエポックは非常に小さく、それでトレーニングします。上エポック2 Iは、データファイルは、次のエポックのためのローカルデータファイルの拡張セットに私のサンプリングサブプロセス(今より)と電車で製造されていたものを再検討します。エポックごとにプロセスを繰り返します。このようにして、サンプルのローカルキャッシュを構築し、ローカルストレージがいっぱいになると古いサンプルを削除できます。ローカルサンプルキャッシュは、モデルが最も分散を必要とする頃に(トレーニングの後半に向かって)大きくなります。 Python / Tensorflowでは、PythonのGILがデータ転送速度(300-600 MB /秒、データは未処理の科学的な非圧縮性)をサポートできないため、Pythonトレーニングループプロセスでデータをデシリアライズしないことが重要であり、したがってGPUパフォーマンスPython GILがトレーニングループを高速に処理できない場合に問題が発生します。 tfrecordsサブプロセスからサンプルをファイルに書き込む(Pythonマルチプロセッシング)と、テンソルフローのネイティブTFRecordsDatasetがPythonの外部で逆シリアル化を実行できるため、PythonのGILの問題を回避でき、高いIOデータレートでGPUを飽和させることができます。 Pytorchでこの問題にどう対処するか知りたいのですが。使用しているサンプリング戦略について書いていて、TensorflowとPyTorchの両方のユーザーに特定の推奨事項を提供したいのですが、PyTorchの前処理エコシステムについて十分に詳しく説明できません。 補足:これらのデータ転送速度をサポートする唯一の純粋なPythonベースのソリューションは、System V共有メモリとマルチプロセッシングを備えたPython 3.8で提供される可能性がありますが、まだ十分にサポートされていないため、まだ試していません(まもなく)。既存のマルチプロセッシングソリューションは、トレーニングループプロセスでの逆シリアル化を必要とするため、高IOレートでの逆シリアル化中にGILをロックするため、十分ではありません。
8 python  pytorch 

2
Pytorch CNNで損失が減少しない
私はPytorchでタスクのCNNを実行していますが、学習して精度を向上させることはできません。ここに投稿できるように、MNISTデータセットを使用するバージョンを作成しました。なぜ機能しないのかについての答えを探しています。アーキテクチャはすばらしいです。私はそれをKerasで実装し、3エポック後に92%以上の精度がありました。注:私がMNISTを60x60の画像に再形成したのは、それが私の「実際の」問題にあるためです。 import numpy as np from PIL import Image import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torch.utils.data import DataLoader from torch.autograd import Variable from keras.datasets import mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() def resize(pics): pictures = [] for image in pics: …

2
Pytorch:unetアーキテクチャでカスタムウェイトマップを使用する正しい方法
u-netアーキテクチャには、カスタムのウェイトマップを使用して精度を高めるための有名なトリックがあります。詳細は次のとおりです。 さて、ここや他の複数の場所で質問することで、2つのアプローチについて知ることができます。 1)最初はtorch.nn.Functionalトレーニングループでメソッドを使用することです- loss = torch.nn.functional.cross_entropy(output, target, w) ここで、wは計算されたカスタムの重みです。 2)2つ目はreduction='none'、トレーニングループ外の損失関数の呼び出しで使用することです。 criterion = torch.nn.CrossEntropy(reduction='none') そして、トレーニングループでカスタムウェイトを掛けます- gt # Ground truth, format torch.long pd # Network output W # per-element weighting based on the distance map from UNet loss = criterion(pd, gt) loss = W*loss # Ensure that weights are scaled appropriately loss …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.