Python 3.7 , windows10
この質問の前に、この下記処理後のコードに関する質問をしています。そこで発生するエラーはどうやらここでの処理で正常なファイルが生成されていないためだとご指摘いただきました。解決にご協力ください。
#犬猫見た目による学習/検証データの準備
from PIL import Image
import os, glob
import numpy as np
import random, math
#画像が保存されているルートディレクトリのパス
root_dir ="C:\Users\kmll\python_code\dog"
種類
categories = ["cat","dog"]
画像データ用配列
X = []
種類データ用配列
Y = []
#画像データごとにadd_sample()を呼び出し、X,Yの配列を返す関数
def make_sample(files):
global X, Y
X = []
Y = []
for cat, fname in files:
add_sample(cat, fname)
return np.array(X), np.array(Y)
#渡された画像データを読み込んでXに格納し、また、
#画像データに対応するcategoriesのidxをY格納する関数
def add_sample(cat, fname):
img = Image.open(fname)
img = img.convert("RGB")
img = img.resize((150, 150))
data = np.asarray(img)
X.append(data)
Y.append(cat)
#全データ格納用配列
allfiles = []
#カテゴリ配列の各値と、それに対応するidxを認識し、全データをallfilesにまとめる
for idx, cat in enumerate(categories):
image_dir = root_dir + "/" + cat
files = glob.glob(image_dir + "/*.jpg")
for f in files:
allfiles.append((idx, f))
#シャッフル後、学習データと検証データに分ける
random.shuffle(allfiles)
th = math.floor(len(allfiles) * 0.8)
train = allfiles[0:th]
test = allfiles[th:]
X_train, y_train = make_sample(train)
X_test, y_test = make_sample(test)
xy = (X_train, X_test, y_train, y_test)
#データを保存する
np.save("C:\Users\kmll\python_code\cat\tea_data.npy", xy)
python
1#犬猫見た目による学習/検証データの準備 2 3from PIL import Image 4import os, glob 5import numpy as np 6import random, math 7 8#画像が保存されているルートディレクトリのパス 9root_dir ="C:\Users\kmll\python_code\dog" 10# 種類 11categories = ["cat","dog"] 12 13# 画像データ用配列 14X = [] 15# 種類データ用配列 16Y = [] 17 18#画像データごとにadd_sample()を呼び出し、X,Yの配列を返す関数 19def make_sample(files): 20 global X, Y 21 X = [] 22 Y = [] 23 for cat, fname in files: 24 add_sample(cat, fname) 25 return np.array(X), np.array(Y) 26 27#渡された画像データを読み込んでXに格納し、また、 28#画像データに対応するcategoriesのidxをY格納する関数 29def add_sample(cat, fname): 30 img = Image.open(fname) 31 img = img.convert("RGB") 32 img = img.resize((150, 150)) 33 data = np.asarray(img) 34 X.append(data) 35 Y.append(cat) 36 37#全データ格納用配列 38allfiles = [] 39 40#カテゴリ配列の各値と、それに対応するidxを認識し、全データをallfilesにまとめる 41for idx, cat in enumerate(categories): 42 image_dir = root_dir + "/" + cat 43 files = glob.glob(image_dir + "/*.jpg") 44 for f in files: 45 allfiles.append((idx, f)) 46 47#シャッフル後、学習データと検証データに分ける 48random.shuffle(allfiles) 49th = math.floor(len(allfiles) * 0.8) 50train = allfiles[0:th] 51test = allfiles[th:] 52X_train, y_train = make_sample(train) 53X_test, y_test = make_sample(test) 54xy = (X_train, X_test, y_train, y_test) 55#データを保存する 56np.save("C:\Users\kmll\python_code\cat\tea_data.npy", xy)
回答1件
あなたの回答
tips
プレビュー