🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PyTorch

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

4058閲覧

[pytorch] nn.linearの出力がすべてnanになってしまう原因

退会済みユーザー

退会済みユーザー

総合スコア0

PyTorch

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2019/09/06 07:12

編集2019/09/06 07:21

質問内容

pytorchでのnn.linearの出力がすべてnanになってしまい,学習ができません.
以下に学習器のソースコード,その学習器の入力データを示しています.

何卒,よろしくお願いいたします.

該当のソースコード

self.lin1(x)の出力がすべてnanになってしまっている.
入力次元数(X_dim)などは合っている.

class encoderModel(nn.Module): def __init__(self): super(encoderModel, self).__init__() self.lin1 = nn.Linear(X_dim, N) self.lin2 = nn.Linear(N, N) #self.bn = nn.BatchNorm1d(N) self.bn = nn.BatchNorm1d(N, affine=True,track_running_stats= False) #潜在変数z_1(ガウス分布) self.lin3gauss = nn.Linear(N, z_dim) #潜在変数z_2(カテゴリカル分布) self.lin3cat = nn.Linear(N, n_classes) def forward(self, x): x = self.lin1(x) x = F.dropout(x, p=0.4, training=self.training) x = F.relu(self.bn(x) ) x = self.lin2(x) x = F.dropout(x, p=0.4, training=self.training) x = F.relu(self.bn(x) ) xgauss = self.lin3gauss(x) xcat = F.softmax(self.lin3cat(x), 1) return xcat, xgauss

試したこと

nanになってしまう前の入力のデータを確認した.
以下に示す.

tensor([[5.2583e-06, 0.0000e+00, 3.6955e-06, ..., 0.0000e+00, 0.0000e+00, 1.0000e+00], [2.5828e-04, 4.9034e-06, 7.3909e-06, ..., 0.0000e+00, 0.0000e+00, 1.0000e+00], [5.1451e-03, 4.9034e-06, 7.3909e-06, ..., 0.0000e+00, 0.0000e+00, 1.0000e+00], ..., [2.2583e-05, 1.9613e-05, 0.0000e+00, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [9.8721e-01, 9.7577e-04, 0.0000e+00, ..., 1.0000e+00, 0.0000e+00, 0.0000e+00], [7.0835e-01, 2.4517e-05, 2.5868e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00]]) tensor([0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1]) tensor([[1.4934e-04, 9.8067e-06, 7.3909e-06, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [9.2705e-01, 7.8454e-05, 5.1736e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [8.1289e-01, 1.4710e-05, 2.2173e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], ..., [1.0554e-03, 4.4130e-05, 2.9564e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [7.1703e-01, 2.9420e-05, 1.8477e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [5.0953e-04, 4.9034e-06, 7.3909e-06, ..., 0.0000e+00, 0.0000e+00, 1.0000e+00]]) tensor([1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0]) tensor([[1.6667e-08, 4.9034e-06, 0.0000e+00, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [7.0495e-01, 2.9420e-05, 1.8477e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [1.9457e-04, 4.9034e-06, 3.6955e-06, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], ..., [4.1667e-08, 4.9034e-06, 0.0000e+00, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [8.2208e-01, 2.9420e-05, 2.2173e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00], [7.1011e-01, 2.9420e-05, 2.2173e-05, ..., 0.0000e+00, 1.0000e+00, 0.0000e+00]]) tensor([0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1])

補足情報(FW/ツールのバージョンなど)

Python 3.6.9 :: Anaconda, Inc.

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

提示されたコードだけでは、確かなことは言えませんが、一般的に学習率が高すぎるだとか、そう言った要因が原因のような気がします。

投稿2019/09/08 13:03

qax

総合スコア622

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/08 15:24

回答ありがとうございます! 確認してみます! もしよろしければ追加で知りたい情報などあれば編集で公開するので 何卒、よろしくお願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問