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

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

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

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

Python 3.x

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

機械学習

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

3024閲覧

データの入力で以下のエラーが出て詰まっています

RyotaYamada

総合スコア6

NumPy

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

Python 3.x

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

機械学習

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

1グッド

1クリップ

投稿2019/10/26 15:11

前提・実現したいこと

現在、tensorflow版cycleganで声質変換を行うAIを作成しているのですが、データの入力で以下のエラーが出て詰まっています。入力データは二次元のnumpy配列です。

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

File "C:\Users\mounf\PycharmProjects\kujiko_kagakubu\model.py", line 152, in <listcomp> batch_images = [load_train_data(int(float(np.ravel((np.array(list(batch_file)))))), args.load_size, args.fine_size) for batch_file in batch_files] TypeError: only size-1 arrays can be converted to Python scalars

該当のソースコード(データの読み込み)

python

1 2 3def load_train_data(image_path, load_size=286, fine_size=256, is_testing=False): 4 with open(image_path[0], 'rb') as im: 5 fft_array = pickle.load(im) 6 img_A = np.abs(fft_array[:, :128], dtype=np.float32) 7 np.clip(img_A, 1000, None, out=img_A) 8 np.log(img_A, out=img_A) 9 if np.max(img_A) > 0.95: 10 print('input image max bigger than 0.95', np.max(img_A)) 11 if np.min(img_A) < 0.05: 12 print('input image min smaller than 0.05', np.min(img_A)) 13 with open(image_path[1], 'rb') as im: 14 fft_array = pickle.load(im) 15 img_B = np.abs(fft_array[:, :128], dtype=np.float32) 16 np.clip(img_B, 1000, None, out=img_B) 17 np.log(img_B, out=img_B) 18 if np.max(img_B) > 0.95: 19 print('input image max bigger than 0.95', np.max(img_B)) 20 if np.min(img_B) < 0.05: 21 print('input image min smaller than 0.05', np.min(img_B)) 22 if not is_testing: 23 if np.random.random() > 0.5: 24 img_A = np.fliplr(img_A) 25 img_B = np.fliplr(img_B) 26 27 img_AB = np.concatenate(img_A,img_B) 28 img_AB=np.array(img_AB) 29 print(img_AB.ndim) 30 # img_AB shape: (fine_size, fine_size, input_c_dim + output_c_dim) 31 return np.flatten(img_AB) 32 33 34

該当のソースコード(データ入力)

python

1 for epoch in range(args.epoch): 2 dataA = glob('./datasets/{}/*.*'.format(self.dataset_dir + '/trainA')) 3 dataB = glob('./datasets/{}/*.*'.format(self.dataset_dir + '/trainB')) 4 np.random.shuffle(dataA) 5 np.random.shuffle(dataB) 6 batch_idxs = min(min(len(dataA), len(dataB)), args.train_size) // self.batch_size 7 lr = args.lr if epoch < args.epoch_step else args.lr*(args.epoch-epoch)/(args.epoch-args.epoch_step) 8 9 for idx in range(0, batch_idxs): 10 batch_files = list(zip(dataA[idx * self.batch_size:(idx + 1) * self.batch_size], 11 dataB[idx * self.batch_size:(idx + 1) * self.batch_size])) 12 batch_images = [load_train_data(int(float(np.ravel((np.array(list(batch_file)))))), args.load_size, args.fine_size) for batch_file in batch_files] 13 batch_images = np.array(batch_images).astype(np.float32) 14

試したこと

def load_train_data内で、img_AB=np.flatten()など行ったのですが何も効果がありませんでした。

補足情報(FW/ツールのバージョンなど)

numpy 1.17.3
tensorflow-gpu 1.8.0
ここにより詳細な情報を記載してください。

ryuii👍を押しています

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

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

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

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

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

ryuii

2019/10/26 16:32

load_train_dataの第一引数のimage_path(ファイル名)は、数字でよろしかったでしょうか?
ryuii

2019/10/26 17:02

失礼しました。int型の配列ですね。回答いたしました。
guest

回答1

0

エラーメッセージを見たところ、該当ソースコード(データ入力)の最後から2行目の第一引数を渡す箇所で、型の変換の際にエラーが生じているようです。
Numpyのint型やfloat型、Python標準のint型やfloat型を分けるために、アンダースコアを記述します。

以下のソースコードを参考にしてみてください。変換が適切に行われてエラーが出なくなると思います。

python

1batch_images = [load_train_data(np.int_(np.float_(np.ravel((np.array(list(batch_file)))))), args.load_size, args.fine_size) for batch_file in batch_files]

投稿2019/10/26 17:02

編集2019/10/26 17:27
ryuii

総合スコア438

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

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

RyotaYamada

2019/10/26 17:11

申し訳ありません。これを実行したら、ValueError: could not convert string to float とエラーコードが出ました
ryuii

2019/10/26 17:27

すみません、タイプミスしました。ソースコードを修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問