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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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

0回答

1295閲覧

Python value error

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グッド

1クリップ

投稿2019/03/04 06:38

Python 3.7, windows10です。

下記のエラーが発生します。

File "C:\Users\kmll\Anaconda3\envs\keras_work\lib\site-packages\keras\engine\training_utils.py", line 127, in standardize_input_data
'with shape ' + str(data_shape))
ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (0, 1)

コードは下記です。
#モデルの構築

from keras import layers, models

model = models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64,(3,3),activation="relu"))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128,(3,3),activation="relu"))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(128,(3,3),activation="relu"))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Flatten())
model.add(layers.Dense(512,activation="relu"))
model.add(layers.Dense(10,activation="sigmoid")) #分類先の種類分設定

#モデル構成の確認
model.summary()

#モデルのコンパイル

from keras import optimizers

model.compile(loss="binary_crossentropy",
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=["acc"])

#データの準備

from keras.utils import np_utils
import numpy as np

categories = ["cat","dog"]
nb_classes = len(categories)

X_train, X_test, y_train, y_test = np.load("C:\Users\kmll\python_code\cat\resultcat\tea_data.npy")

#データの正規化
X_train = X_train.astype("float") / 255
X_test = X_test.astype("float") / 255

#kerasで扱えるようにcategoriesをベクトルに変換
y_train = np_utils.to_categorical(y_train, nb_classes)
y_test = np_utils.to_categorical(y_test, nb_classes)

#モデルの学習

model = model.fit(X_train,
y_train,
epochs=10,
batch_size=6,
validation_data=(X_test,y_test))

よろしくお願いいたします。

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

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

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

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

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

tiitoi

2019/03/04 06:41

print(X_train.shape, y_train.shape) とするとどうなっていますか?
kmll

2019/03/04 06:54

ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (0, 1)  と出てしまいます。
tiitoi

2019/03/04 06:58

エラーは入力配列の形状のミスマッチによっておきてるので、 np.load の直後に print(X_train.shape, y_train.shape) で形状を確認してくださいという意味でかきました。
kmll

2019/03/04 07:03

はい。直後で実施したのですが、同じエラーがでてしまいます。
tiitoi

2019/03/04 07:13

少なくとも np.load の直前までコピペしましたが、その部分は問題なかったですよ。fit() まで実行が走ればエラーの原因は直してないわけですから、エラーは出ます。 ただ、np.load の直後で形状を print すれば、なんらかの出力が出ているはずだと思いますが。。。
kmll

2019/03/04 07:28

X_train, X_test, y_train, y_test = np.load("C:\\Users\\Atsuhiro\\python_code\\cat\\resultcat\\tea_data.npy") print(X_train.shape, y_train.shape) 認識は上記であっていますでしょうか?
tiitoi

2019/03/04 08:19

はい、そのようにして出力がどうなっているか見てください。 もし print() 文が実行されるより前でエラーが起きている場合はスタックトレースを全部貼ってください
kmll

2019/03/04 08:55

Using TensorFlow backend. _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_1 (Conv2D) (None, 148, 148, 32) 896 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 74, 74, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 72, 72, 64) 18496 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 36, 36, 64) 0 _________________________________________________________________ conv2d_3 (Conv2D) (None, 34, 34, 128) 73856 _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (None, 17, 17, 128) 0 _________________________________________________________________ conv2d_4 (Conv2D) (None, 15, 15, 128) 147584 _________________________________________________________________ max_pooling2d_4 (MaxPooling2 (None, 7, 7, 128) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 6272) 0 _________________________________________________________________ dense_1 (Dense) (None, 512) 3211776 _________________________________________________________________ dense_2 (Dense) (None, 10) 5130 ================================================================= Total params: 3,457,738 Trainable params: 3,457,738 Non-trainable params: 0 _________________________________________________________________ (0,) (0,) Traceback (most recent call last): File "C:\Users\kmll\python_code\photo_consist of prediction model.py", line 54, in <module> validation_data=(X_test,y_test)) File "C:\Users\kmll\Anaconda3\envs\keras_work\lib\site-packages\keras\engine\training.py", line 950, in fit batch_size=batch_size) File "C:\Users\kmll\Anaconda3\envs\keras_work\lib\site-packages\keras\engine\training.py", line 749, in _standardize_user_data exception_prefix='input') File "C:\Users\kmll\Anaconda3\envs\keras_work\lib\site-packages\keras\engine\training_utils.py", line 127, in standardize_input_data 'with shape ' + str(data_shape)) ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (0, 1)
tiitoi

2019/03/04 09:04

どこまでがエラーの出力か区別が付いてますか? エラーが起こっているのは fit() が実行された段階で、それまでは正常に実行できているので、print() の出力がちゃんと出てます。 > (0,) (0,) そしてこれは X_train, y_train が空の配列ということを意味するので、tea_data.npy という入力ファイルがそもそもおかしいのではないでしょうか
kmll

2019/03/04 09:17

言われて理解することができました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問