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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

NumPy

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

Python 3.x

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

Q&A

解決済

1回答

1594閲覧

Tensorflow・kerasでの画像認識モデル作成で、学習データとテストデータをnpyで一つにまとめたい

YuttyaDX

総合スコア25

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

NumPy

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

Python 3.x

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

0グッド

0クリップ

投稿2023/08/05 04:37

編集2023/08/05 04:50

実現したいこと

Tensorflow・kerasでの画像認識モデル作成で、学習データとテストデータをnpyで一つにまとめたい

前提

こちらのURLを参考にkerasでのモデル作成のためのデータセットを作っていました。

Tensorflow・kerasで画像認識モデル作成|深層学習×Pythonの畳み込みニューラルネットワーク(CNN)

下にあるソースコードはこのURLにあったコードとほぼ同じです
labels = ["blueberry","grapes","mixedfruit"]
のところのみ変更しました。

このエラーを解決するためになにか知っている人はいますか?

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

Traceback (most recent call last): File "c:\Users\topaz\Desktop\Keras\createsamples.py", line 74, in <module> np.save(dataset_dir,dataset) File "<__array_function__ internals>", line 200, in save File "C:\Users\topaz\AppData\Local\Programs\Python\Python310\lib\site-packages\numpy\lib\npyio.py", line 521, in save arr = np.asanyarray(arr) ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (4,) + inhomogeneous part.

該当のソースコード

python

1from PIL import Image 2import numpy as np 3import os,glob 4 5# クラスラベル 6labels = ["blueberry","grapes","mixedfruit"] 7# ディレクトリ 8dataset_dir = "data/dataset.npy" # 前処理済みデータ 9model_dir = "data/cnn_h5" # 学習済みモデル 10# リサイズ設定 11resize_settings = (50,50) 12 13# 画像データ 14X_train = [] # 学習 15y_train = [] # 学習ラベル 16X_test = [] # テスト 17y_test = [] # テストラベル 18 19for class_num, label in enumerate(labels): 20 21 # 写真のディレクトリ 22 photos_dir = "data/" + label 23 24 # 画像データを取得 25 files = glob.glob(photos_dir + "/*.jpg") 26 27 #写真を順番に取得 28 for i,file in enumerate(files): 29 30 # 画像を1つ読込 31 image = Image.open(file) 32 33 # 画像をRGBの3色に変換 34 image = image.convert("RGB") 35 36 # 画像のサイズを揃える 37 image = image.resize(resize_settings) 38 39 # 画像を数字の配列変換 40 data = np.asarray(image) 41 42 # テストデータ追加 43 if i%4 ==0: 44 X_test.append(data) 45 y_test.append(class_num) 46 47 # 学習データ傘増し 48 else: 49 # -20度から20度まで4度刻みで回転したデータを追加 50 for angle in range(-25,20,5): 51 # 回転 52 img_r = image.rotate(angle) 53 # 画像 → 数字の配列変換 54 data = np.asarray(img_r) 55 # 追加 56 X_train.append(data) 57 y_train.append(class_num) 58 # 画像左右反転 59 img_trans = image.transpose(Image.FLIP_LEFT_RIGHT) 60 data = np.asarray(img_trans) 61 X_train.append(data) 62 y_train.append(class_num) 63 64 65# X,YがリストなのでTensorflowが扱いやすいようnumpyの配列に変換 66X_train = np.array(X_train) 67X_test = np.array(X_test) 68y_train = np.array(y_train) 69y_test = np.array(y_test) 70 71 72# 前処理済みデータを保存 73dataset = (X_train,X_test,y_train,y_test) 74np.save(dataset_dir,dataset)

試したこと

google翻訳でエラーを翻訳して「配列の次元?が不均一」と書かれていたので、そろえようとしたがエラーが増えてよくわからなかった。

やってほしいこと

この原因の解明と対策

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

python3.10.10
numpy==1.24.2
Pillow==10.0.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

翻訳して得られた文言の通り,dataset = (X_train,X_test,y_train,y_test)というtuple型をnumpyにおけるndarray型に変換しようとして,出るエラーです.

python

1dataset = { 2 "X_train": X_train, 3 "X_test": X_test, 4 "y_train": y_train, 5 "y_test": y_test 6}

として辞書型にしておけば保存できるはずです.

投稿2023/08/06 16:21

PondVillege

総合スコア1581

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問