前提・実現したいこと
自分で持っている画像をchinerで使えるデータセットに変換し、con.concat_examplesを使ってデータを分割したいのですが、以下のようなエラーが発生します。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-26-3d8accadaf6d> in <module>() ----> 1 xtrain, ttrain = con.concat_examples(train) 2 xtest, ttest = con.concat_examples(train) 7 frames /usr/local/lib/python3.6/dist-packages/chainer/dataset/convert.py in __call__(self, *args, **kwargs) 63 elif 'device' in kwargs: 64 kwargs['device'] = _get_device(kwargs['device']) ---> 65 return base_callable(*args, **kwargs) 66 67 /usr/local/lib/python3.6/dist-packages/chainer/dataset/convert.py in concat_examples_func(batch, device, padding) 271 raise ValueError('batch is empty') 272 --> 273 first_elem = batch[0] 274 275 if isinstance(first_elem, tuple): /usr/local/lib/python3.6/dist-packages/chainer/dataset/dataset_mixin.py in __getitem__(self, index) 65 return [self.get_example(i) for i in index] 66 else: ---> 67 return self.get_example(index) 68 69 def __len__(self): /usr/local/lib/python3.6/dist-packages/chainer/datasets/sub_dataset.py in get_example(self, i) 74 if self._order is not None: 75 index = self._order[index] ---> 76 return self._dataset[index] 77 78 /usr/local/lib/python3.6/dist-packages/chainer/dataset/dataset_mixin.py in __getitem__(self, index) 65 return [self.get_example(i) for i in index] 66 else: ---> 67 return self.get_example(index) 68 69 def __len__(self): /usr/local/lib/python3.6/dist-packages/chainer/datasets/transform_dataset.py in get_example(self, i) 49 50 def get_example(self, i): ---> 51 in_data = self._dataset[i] 52 return self._transform(in_data) /usr/local/lib/python3.6/dist-packages/chainer/dataset/dataset_mixin.py in __getitem__(self, index) 65 return [self.get_example(i) for i in index] 66 else: ---> 67 return self.get_example(index) 68 69 def __len__(self): /usr/local/lib/python3.6/dist-packages/chainer/datasets/image_dataset.py in get_example(self, i) 156 157 def get_example(self, i): --> 158 path, int_label = self._pairs[i] 159 full_path = os.path.join(self._root, path) 160 image = _read_image_as_array(full_path, self._dtype) ValueError: too many values to unpack (expected 2)
該当のソースコード
python
1import chainer.dataset.convert as con 2import os 3import chiner.datasets as ds 4 5def add_labeled_data(folder, all_list): 6 image_files = os.listdir(folder) 7 for i in range(5): 8 for j in range(20): 9 labeled_file = (folder + '{}_{}'.format(i, j)) 10 all_list.append(labeled_file) 11 return all_list 12 13def transform64(data): 14 data = data.astype(np.uint8) 15 data = im.fromarray(data.transpose(1, 2, 0)) 16 data = data.resize((64, 64), im.BICUBIC) 17 data = np.asarray(data).transpose(2, 0, 1) 18 data = data.astype(np.float32) / 255 19 return data 20 21all_list = [] 22add_labeled_data('/content/drive/My Drive/Colab Notebooks/haruna_picture/', all_list) 23add_labeled_data('/content/drive/My Drive/Colab Notebooks/shrek_picture/', all_list) 24dataset = ds.LabeledImageDataset(all_list) 25 26dataset = ds.TransformDataset(dataset, transform64) 27D = len(dataset) 28Dtrain = D // 2 29train,test = ds.split_dataset_random(dataset, Dtrain) 30 31xtrain, ttrain = con.concat_examples(train) 32xtest, ttest = con.concat_examples(train) 33 34
試したこと
大関真之著書のpythonで機械学習入門の第7章を参考にして書いています。
最後2行で上のエラーメッセージが発生します。
不備があればその都度追加しますので、指摘お願いします。
補足情報(FW/ツールのバージョンなど)
python3.7
Google corabolatoryを使用
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。