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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2061閲覧

正規のデータが出力されない

kmll

総合スコア19

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/03/09 07:31

編集2019/03/09 07:33

Win10, python3.7

完全に行き詰っています。
画像をうまく読み込めていない可能性があります。
プログラムは正常に動きますが、結果を見ると空のデータが出力されます。
写真サイズは150x150です。
"nekobox"に5枚格納しています

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\nekobox" 10# 種類 11categories = ["neko","inu"] 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 56#データを保存する(データの名前を「animal_data.npy」としている) 57np.save("C:\Users\kmll\python_code\animal/animal_data.npy", xy) 58print(xy)

出力結果

(array([], dtype=float64), array([], dtype=float64), array([], dtype=float64), array([], dtype=float64))

助けてください。

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

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

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

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

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

y_waiwai

2019/03/09 07:39

なにをしてるコードですか? また、正規のデータとはどんなデータなんでしょう
kmll

2019/03/09 07:42

猫、犬の写真を学習/検証データにするコードです。 次の工程(別コード)で予測モデルを構築/学習する際に、上記のコードで作成したデータファイルを読み込みますが、値が入っていないためエラーになります。
tiitoi

2019/03/09 07:43 編集

データがない以上、こちらではコードを実行してのデバッグできないので、print 文を入れてどこがおかしいのかチェックしてください 例えば > 画像をうまく読み込めていない可能性があります。 とありますが、これも print すれば、すぐにわかる話ですよね。
kmll

2019/03/09 07:43

プログラム全体は猫犬を判別するコードです。
kmll

2019/03/09 07:52

何か適当な画像で検証していただけないでしょうか?
tiitoi

2019/03/09 07:55

適当な画像入れて試したら動いてちゃんと中身のある npy ファイルができましたよ。 なので、パス等が間違っている可能性がありますね。 allfiles が空じゃないか等は確認済みですか?
kmll

2019/03/09 08:05

allfilesが空でした。 ルートディレクトリは下記の通りで C:\\Users\\kmll\\python_code\\nekobox このnekoboxに写真が格納されています。
tiitoi

2019/03/09 08:13 編集

間違いは見たところ無さそうですが、パスに関係する変数を 1つ1つ print して確認してください (スペルミスなど)
guest

回答1

0

ベストアンサー

ミスをなくすために

  1. Windows の \ マークを含むパスの記述は raw文字列 を使う。

  2. パスの結合は os.path.join() を使う。

とした上で、1つ1つ print() して意図どおりになっているか確認してください。

diff

1- root_dir ="C:\Users\kmll\python_code\nekobox" 2+ root_dir = r'C:\Users\kmll\python_code\nekobox' 3+ print(root_dir)

diff

1- image_dir = root_dir + "/" + cat 2- files = glob.glob(image_dir + "/*.jpg") 3+ image_dir = os.path.join(root_dir, cat) 4+ print(image_dir) 5+ files = glob.glob(os.path.join(image_dir , "*.jpg")) 6+ print(files)

ちなみに読み込もうとしている画像の拡張子が jpg ですよね?

投稿2019/03/09 08:11

tiitoi

総合スコア21956

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

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

kmll

2019/03/09 08:13

拡張子はjpgです.
tiitoi

2019/03/09 08:16

os.path.exists(パス) でパス関係の変数を入れて、全部 True になっているか確認してみてはどうでしょうか もし False になっていたら、スペルミスとかなんらかの理由でパスが認識されていないということです。
kmll

2019/03/09 08:28

できました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問