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

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

新規登録して質問してみよう
ただいま回答率
85.46%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

PyTorch

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

Python 3.x

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

1回答

6018閲覧

ValueError: num_samples should be a positive integer value, but got num_samples=0と出てしまう

Ryo-kfc

総合スコア0

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

PyTorch

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

Python 3.x

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2021/11/11 09:42

編集2021/11/11 15:04

`### 前提・実現したいこと

Windows10のGoogle colabolatory上で無料でGPUを使い機械学習を行っています。言語はpython3、機械学習フレームワークはPytorchです。Cycleganのコードを実装し、Google driveをマウントしました。マウントしたMydrive/photo2portrait/train/A Mydrive/photo2portrait/train/BのようにAとBというファルダ(データセット)2つを入力として画像のスタイル変換を行おうとしています。そこでGoogle colabでCycleGANを行うための書籍の付録のコードを実行したところ、エラーが出てしまいました。#データローダーの箇所のコードでエラーが起きました。

発生している問題・エラーメッセージ

ValueError: num_samples should be a positive integer value, but got num_samples=0
こちらがエラー内容です。

# 生成器 netG_A2B = Generator(opt.input_nc, opt.output_nc) netG_B2A = Generator(opt.output_nc, opt.input_nc) # 識別器 netD_A = Discriminator(opt.input_nc) netD_B = Discriminator(opt.output_nc) # GPU if not opt.cpu: netG_A2B.cuda() netG_B2A.cuda() netD_A.cuda() netD_B.cuda() # 重みパラメータ初期化 netG_A2B.apply(weights_init_normal) netG_B2A.apply(weights_init_normal) netD_A.apply(weights_init_normal) netD_B.apply(weights_init_normal) # 保存したモデルのロード if opt.load_weight is True: netG_A2B.load_state_dict(torch.load("./output/netG_A2B.pth", map_location="cuda:0"), strict=False) netG_B2A.load_state_dict(torch.load("./output/netG_B2A.pth", map_location="cuda:0"), strict=False) netD_A.load_state_dict(torch.load("./output/netD_A.pth", map_location="cuda:0"), strict=False) netD_B.load_state_dict(torch.load("./output/netD_B.pth", map_location="cuda:0"), strict=False) # 損失関数 criterion_GAN = torch.nn.MSELoss() criterion_cycle = torch.nn.L1Loss() criterion_identity = torch.nn.L1Loss() # Optimizers & LR schedulers optimizer_G = torch.optim.Adam(itertools.chain(netG_A2B.parameters(), netG_B2A.parameters()), lr=opt.lr, betas=(0.5, 0.999)) optimizer_D_A = torch.optim.Adam(netD_A.parameters(), lr=opt.lr, betas=(0.5, 0.999)) optimizer_D_B = torch.optim.Adam(netD_B.parameters(), lr=opt.lr, betas=(0.5, 0.999)) lr_scheduler_G = torch.optim.lr_scheduler.LambdaLR(optimizer_G, lr_lambda=LambdaLR(opt.n_epochs, opt.start_epoch, opt.decay_epoch).step) lr_scheduler_D_A = torch.optim.lr_scheduler.LambdaLR(optimizer_D_A, lr_lambda=LambdaLR(opt.n_epochs, opt.start_epoch, opt.decay_epoch).step) lr_scheduler_D_B = torch.optim.lr_scheduler.LambdaLR(optimizer_D_B, lr_lambda=LambdaLR(opt.n_epochs, opt.start_epoch, opt.decay_epoch).step) # 入出力メモリ確保 Tensor = torch.cuda.FloatTensor if not opt.cpu else torch.Tensor input_A = Tensor(opt.batch_size, opt.input_nc, opt.size, opt.size) input_B = Tensor(opt.batch_size, opt.output_nc, opt.size, opt.size) target_real = Variable(Tensor(opt.batch_size).fill_(1.0), requires_grad=False) target_fake = Variable(Tensor(opt.batch_size).fill_(0.0), requires_grad=False) # 過去データ分のメモリ確保 fake_A_buffer = ReplayBuffer() fake_B_buffer = ReplayBuffer() # データローダー transforms_ = [ transforms.Resize(int(opt.size*1.12), Image.BICUBIC), transforms.RandomCrop(opt.size), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize((0.5,0.5,0.5), (0.5,0.5,0.5)) ] dataloader = DataLoader(ImageDataset(opt.dataroot, transforms_=transforms_, unaligned=True), batch_size=opt.batch_size, shuffle=True, num_workers=opt.n_cpu) print("num dataloader= {}".format(len(dataloader))) ここのdataloader = DataLoader(ImageDataset(opt.dataroot, transforms_=transforms_, unaligned=True), batch_size=opt.batch_size, shuffle=True, num_workers=opt.n_cpu) のところがエラー箇所です。 エラー内容は以下の通りです。 /usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:13: UserWarning: nn.init.normal is now deprecated in favor of nn.init.normal_. del sys.path[0] /usr/local/lib/python3.7/dist-packages/torchvision/transforms/transforms.py:281: UserWarning: Argument interpolation should be of type InterpolationMode instead of int. Please, use InterpolationMode enum. "Argument interpolation should be of type InterpolationMode instead of int. " --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-16-f9c7f2243d46> in <module>() 60 transforms.Normalize((0.5,0.5,0.5), (0.5,0.5,0.5)) ] 61 dataloader = DataLoader(ImageDataset(opt.dataroot, transforms_=transforms_, unaligned=True), ---> 62 batch_size=opt.batch_size, shuffle=True, num_workers=opt.n_cpu) 63 64 print("num dataloader= {}".format(len(dataloader))) 1 frames /usr/local/lib/python3.7/dist-packages/torch/utils/data/sampler.py in __init__(self, data_source, replacement, num_samples, generator) 101 if not isinstance(self.num_samples, int) or self.num_samples <= 0: 102 raise ValueError("num_samples should be a positive integer " --> 103 "value, but got num_samples={}".format(self.num_samples)) 104 105 @property ValueError: num_samples should be a positive integer value, but got num_samples=0

試したこと

GPUの接続を切って何度も実行しましたがこのコードのままでは毎回同じエラーが出てしまいます。初心者のため、変更すべきところがわからないので困っています。

追記

本の名前はPytorchによる画像生成/画像変換のためのGANディープラーニング実装ハンドブック、その中でのCHAPTER5のsection5_2のCYCLEGANのコードを参考にしています。現在手元にないため、すみませんが、ページ数は分かりません。

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

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

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

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

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

jbpb0

2021/11/11 10:05

> 書籍の付録のコードを実行 書籍名と、コードが載ってるページ数を教えてください
jbpb0

2021/11/11 10:13

「opt.*」(「opt.dataroot」とか「opt.batch_size」とか)に、質問に掲載してるコード以外のどこかでパラメータをいろいろ格納してると思いますが、それらの内容は大丈夫でしょうか? > but got num_samples=0 サンプル数が0というのは、データがちゃんと読み込めてないっぽいような
jbpb0

2021/11/12 02:31

> Pytorchによる画像生成/画像変換のためのGANディープラーニング実装ハンドブック、その中でのCHAPTER5のsection5_2のCYCLEGANのコード そのページが出てこないので、同じ書籍の近いコードが載ってる別のページ https://books.google.co.jp/books?id=fYQnEAAAQBAJ&pg=PA209#v=onepage&q&f=false を参照すると、208ページの「パラメータ設定」のところで「opt.*」の設定をしてます 書籍の「5_2」のコードでも、同様な設定をしてると思います そこの設定は大丈夫でしょうか? たとえば、「dataroot」の指定は、下記を指すようになってますでしょうか? (たぶん「.../photo2portrait」の部分) > マウントしたMydrive/photo2portrait/train/A Mydrive/photo2portrait/train/BのようにAとBというファルダ(データセット)2つを入力
jbpb0

2021/11/12 04:25 編集

Google Colabの場合は、カレントディレクトリを変えてない場合は、カレントディレクトリは「/content」なので、相対パスで指定する場合はそこからのパスを指定する必要があります たとえば、カレントディレクトリが「/content」で、データセットが「/content/drive/MyDrive/photo2portrait」にある場合は、「dataroot」での指定を相対パスで行う場合は、 './drive/MyDrive/photo2portrait/' みたいな指定になります もちろん、絶対パス指定 '/content/drive/MyDrive/photo2portrait/' でも大丈夫だと思います (最後の「/」は、たぶん無くても大丈夫)
guest

回答1

0

but got num_samples=0

サンプル数が0というのは、データがちゃんと読み込めてないように思います

Pytorchによる画像生成/画像変換のためのGANディープラーニング実装ハンドブック、その中でのCHAPTER5のsection5_2のCYCLEGANのコード

マウントしたMydrive/photo2portrait/train/A Mydrive/photo2portrait/train/BのようにAとBというファルダ(データセット)2つを入力として

データセットの設定が怪しいので、
section5_2_cycleGAN.ipynb
の「パラメータ設定」等のパスが合ってるか、確認してみてください

投稿2021/11/15 07:00

jbpb0

総合スコア7653

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問