実現したいこと
加工した画像データをnumpyのsaveで保存し、numpyのloadで読み込みたい。
発生している問題・分からないこと
np.save("./dog_cat.npy",xy)と、辞書型にxyをすると
x_train,x_test,y_train,y_test=np.load("./dog_cat.npy",
allow_pickle=True)のところでエラーが発生します
エラーメッセージ
error
1##saveの場合のエラー 2ValueError Traceback (most recent call last) 3Cell In[36], line 13 4 6 xy=(x_train,x_test,y_train,y_test) 5 7 #xy = { 6 8 #"X_train": x_train, 7 9 #"X_test": x_test, 8 10 #"y_train": y_train, 9 11 #"y_test": y_test 10 12 #} 11---> 13 np.save("./dog_cat.npy",xy) 12 13File ~/.pyenv/versions/anaconda3-2023.09-0/lib/python3.11/site-packages/numpy/lib/npyio.py:545, in save(file, arr, allow_pickle, fix_imports) 14 542 file_ctx = open(file, "wb") 15 544 with file_ctx as fid: 16--> 545 arr = np.asanyarray(arr) 17 546 format.write_array(fid, arr, allow_pickle=allow_pickle, 18 547 pickle_kwargs=dict(fix_imports=fix_imports)) 19 20ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (4,) + inhomogeneous part. 21 22##辞書型にxyを保存した場合(コメントアウトした部分)のエラー 23TypeError Traceback (most recent call last) 24Cell In[34], line 1 25----> 1 x_train,x_test,y_train,y_test=np.load("./dog_cat.npy", 26 2 allow_pickle=True) 27 28TypeError: iteration over a 0-d array
該当のソースコード
python
1from PIL import Image 2import os,glob 3import numpy as np 4from PIL import ImageFile 5 6ImageFile.LOAD_TRUNCATED_IMAGES=True 7 8classes=["dog","cat"] 9num_classes=len(classes) 10image_size=64 11 12num_testsize=25 13 14x_train,y_train,x_test,y_test=[],[],[],[] 15 16#画像処理 17for index,label in enumerate(classes): 18 print(index,label) 19 if(label == "犬"): 20 photo_dir="photos_犬/" 21 else: 22 photo_dir="photos_猫/" 23 files=glob.glob(photo_dir+"/*.jpg") 24 print(files) 25 print(len(files)) 26 for i,file in enumerate(files): 27 #print(i,file) 28 image=Image.open(file) 29 image=image.convert("RGB") 30 image=image.resize((image_size,image_size)) 31 data=np.asarray(image) 32 if(i<num_testsize): 33 x_test.append(data) 34 y_test.append(index) 35 else: 36 for angle in range(-20,20,5): 37 img_r=image.rotate(angle) 38 data=np.asarray(img_r) 39 x_train.append(data) 40 y_train.append(index) 41 img_trains=img_r.transpose(Image.FLIP_LEFT_RIGHT) 42 data=np.asarray(img_trains) 43 x_train.append(data) 44 y_train.append(index) 45 46x_train=np.array(x_train) 47x_test=np.array(x_test) 48y_train=np.array(y_train) 49y_test=np.array(y_test) 50 51xy=(x_train,x_test,y_train,y_test) 52#xy = { 53#"X_train": x_train, 54#"X_test": x_test, 55#"y_train": y_train, 56#"y_test": y_test 57#} 58np.save("./dog_cat.npy",xy) 59 60x_train,x_test,y_train,y_test=np.load("./dog_cat.npy", 61 allow_pickle=True)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
辞書型でエラーが発生しなくなると見つかりましたが読み込み方が分かりません。エラーが発生します。
補足
anaconda3-2023.09-0
macM1

回答1件
あなたの回答
tips
プレビュー