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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

深層学習

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

2283閲覧

Image.formarray().resize()で画像の呼び込みができません

uuu1010

総合スコア7

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

深層学習

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2021/01/13 11:41

タイトル通りですが、機械学習のためローカルから画像を取り出すために以下のコードを使った際、エラーが次のように出てしまいます。

img_A = np.array(Image.fromarray((img_A * 255).astype(np.uint8)).resize(self.img_res, img_A))

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

このエラーについてこちらで確認したのですが、どれも対処法としては今回適さないようなので、こちらで質問させていただきます。

コードは次の通りです。

class DataLoader(): def __init__(self, dataset_name, img_res=(128, 128)): self.dataset_name = dataset_name self.img_res = img_res def load_batch(self, batch_size=1, is_testing=False): data_type = "train" if not is_testing else "val" path_A = glob('./gan_datasets/%s/%sA/*' % (self.dataset_name, data_type)) path_B = glob('./gan_datasets/%s/%sB/*' % (self.dataset_name, data_type)) self.n_batches = int(min(len(path_A), len(path_B)) / batch_size) total_samples = self.n_batches * batch_size path_A = np.random.choice(path_A, total_samples, replace=False) path_B = np.random.choice(path_B, total_samples, replace=False) for i in range(self.n_batches-1): batch_A = path_A[i*batch_size:(i+1)*batch_size] batch_B = path_B[i*batch_size:(i+1)*batch_size] imgs_A, imgs_B = [], [] for img_A, img_B in zip(batch_A, batch_B): img_A = self.imread(img_A) img_B = self.imread(img_B)           # ーーー問題の箇所がこちらです↓ーーー img_A = np.array(Image.fromarray((img_A * 255).astype(np.uint8)).resize(self.img_res, img_A)) img_B = np.array(Image.fromarray(img_B.astype(np.uint8)).resize(self.img_res, img_B))           # ーーー問題の箇所がこちらです↑ーーー

<コード作成の経緯とこれまで対処してきたこと>
①初め、問題の箇所については以下のコードで書いていました。
しかし、scipy.misc.imresize自体がver1.3.0以降使えなくなったと分かり、対処法として
numpy.array(Image.fromarray(arr).resize())を使うことにしました。
※上記対処法についてはこちらで確認しました。

img_A = scipy.misc.imresize(img_A, self.img_res) img_B = scipy.misc.imresize(img_B, self.img_res)

②次に、コードを以下の通りに書き直すも、今度は次のエラーが出ました。

TypeError: Cannot handle this data type: (1, 1, 3), <f8

この件に関しては、他の方のteratailでの質問・回答より、呼び込む画像データの型に問題があると分かりました。
こちらで理由を確認しました。

img_A = np.array(Image.fromarray(img_A).resize(self.img_res, img_A)) img_B = np.array(Image.fromarray(img_B).resize(self.img_res, img_B))

③最後に、②を踏まえてデータの型を変えるために以下のコードにするも、本質問で出したようにエラーが出てしまいました。
※コード変更はこちらを参考にしました。

img_A = np.array(Image.fromarray((img_A * 255).astype(np.uint8)).resize(self.img_res, img_A))

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

img_A = np.array(Image.fromarray((img_A * 255).astype(np.uint8)).resize(self.img_res, img_A)) img_B = np.array(Image.fromarray((img_A * 255).astype(np.uint8)).resize(self.img_res, img_B))

お手数をおかけしますが、どうかよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1img_A = np.array(Image.fromarray((img_A * 255).astype(np.uint8)).resize(self.img_res, img_A)) 2img_B = np.array(Image.fromarray((img_B * 255).astype(np.uint8)).resize(self.img_res, img_B))

↓ 変更する

python

1img_A = np.array(Image.fromarray((img_A * 255).astype(np.uint8)).resize(self.img_res)) 2img_B = np.array(Image.fromarray((img_B * 255).astype(np.uint8)).resize(self.img_res))

投稿2021/01/13 12:50

jbpb0

総合スコア7653

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

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

uuu1010

2021/01/13 13:54

ありがとうございます! こんなに早く回答がいただけ感謝の限りです! 凡ミスでしたね、お騒がせしました、無事に動きました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問