質問内容
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.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/08 15:24