Pytorchで少し凝った入出力のNNを作成するときには、既存のDatasetで対応できないことがあります。その際にはtorch.utils.data.datasetを継承する形で自作のDatasetを作成するのですが、そこで乱数を使っていると意図しない挙動をするケースがあったので、書き残しておきます。乱数と再現性は本当に難しいですね……。 環境 Python 3.6.3 Pytorch 0.4.1 macOS High Sierra 10.13.6 問題 ここでは例として、以下のようにnp.random.uniform(-1, 1)の値を返すDatasetを考えます。想定としては、このDatasetから値を取り出すたびに、-1から1の間の値がランダムに返ってきてほしいわけです。 import torch from torch.utils.data.dataset import Datas
![Pytorchにおいて自作Dataset内で乱数を使うときの注意点 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/e967ab12c7e51dc7ceadb3e00756963623623587/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UHl0b3JjaCVFMyU4MSVBQiVFMyU4MSU4QSVFMyU4MSU4NCVFMyU4MSVBNiVFOCU4NyVBQSVFNCVCRCU5Q0RhdGFzZXQlRTUlODYlODUlRTMlODElQTclRTQlQjklQjElRTYlOTUlQjAlRTMlODIlOTIlRTQlQkQlQkYlRTMlODElODYlRTMlODElQTglRTMlODElOEQlRTMlODElQUUlRTYlQjMlQTglRTYlODQlOEYlRTclODIlQjkmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPWYwMDllOGJkMjZlOGFmMmE4NDg3ZmVhNGFkNWNjMjdj%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB5YWdheXMmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTQ5NzAzYWZiNDQ3MTA2YjQwMzBkYjA0ZmRhMTBhODc5%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Dd4f4621bfb893df0c90e5eb7c8173377)