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

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

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

1回答

1153閲覧

モデルの学習について

Nitta

総合スコア96

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/07/09 00:13

編集2022/01/12 10:55

今ある2種類動物の150枚ぐらい画像を用意し、学習させ推測できるように
したいのですが、畳み込み関数の設定の箇所で以下のようなエラーが
出現しこまってます。
お分かりの方居られましたら、ご教示お願いできませんでしょうか?

●エラー内容

ValueError Traceback (most recent call last) <ipython-input-22-763384d09883> in <module>() 70 model = train(X_train, y_train, X_test, y_test) 71 ---> 72 main() 73 ValueError: Input 0 is incompatible with layer conv2d_23: expected ndim=4, found ndim=1

●学習コード

from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D from keras.layers import Activation, Dropout,Flatten, Dense from keras.utils import np_utils import keras import numpy as np classes = ["dog", "cat"] num_classes = len(classes) image_size=64 #データを読み込む関数 def load_data(): X_train, X_test, y_train, y_test = np.load("./dog_cat.npy", allow_pickle=True) X_train = X_train.astype("float") / 255 X_test = X_test.astype("float") / 255 y_train = np_utils.to_categorical(y_train, num_classes) y_test = np_utils.to_categorical(y_test, num_classes) return X_train, y_train, X_test, y_test #モデルを学習する関数 def train(X, y, X_test, y_test): model = Sequential() model.add(Conv2D(32,(3,3), padding='same', input_shape=X.shape[1:])) model.add(Activation('relu')) model.add(Conv2D(32,(3,3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.1)) model.add(Conv2D(64,(3,3), padding='same')) model.add(Activation('relu')) model.add(Conv2D(64,(3,3))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.45)) model.add(Dense(2)) model.add(Activation('softmax')) opt=keras.optimizers.rmsprop(lr=0.00005, decay=1e-6) model.compile(loss='categorical_crossentropy',optimizer=opt,metrics=['accuracy']) model.fit(X, y, batch_size=28, epochs=40) model.save('./cnn.h5') return model #メイン関数 #データの読み込みとモデルの学習を実施 def main(): X_train, y_train, X_test, y_test = load_data() model = train(X_train, y_train, X_test, y_test) main()

●データの整調

#取り込んだ犬と猫のデータを調整(回転させるなど) from PIL import Image import os,glob import numpy as np classes=["dogs","cats"] num_classes = len(classes) image_size = 64 num_testdata = 25 X_train = [] Y_train = [] X_test = [] Y_test = [] for index,classlabel in enumerate(classes): photos_dir = "./" + classlabel files = glob.glob(photos_dir + "/*.jpg") for i, file in enumerate(files): image = Image.open(file).convert("RGB") #image = Image.convert("RGB") image = image.resize((image_size, image_size)) data = np.asarray(image) if i < num_testdata: X_test.append(data) Y_test.append(index) else: for angle in range(-20, 20, 5): img_r = image.rotate(angle) data = np.asarray(img_r) X_train.append(data) Y_train.append(index) img_trans = img_r.transpose(Image.FLIP_LEFT_RIGHT) data = np.asarray(img_trans) X_train.append(data) Y_train.append(index) X_train = np.array(X_train) X_test = np.array(X_test) Y_train = np.array(Y_train) Y_test = np.array(Y_test) xy = (X_train, X_test, Y_train, Y_test) np.save("./dog_cat.npy", xy)

input_shapeガおかしいのでしょうが、どう修正すればいいのか??

以上、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

投稿2019/07/09 02:09

horiegom

総合スコア152

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

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

Nitta

2019/07/10 00:23

返信遅れすいません。 データの整調において、X_train(色、サイズ、画像の回転角度、左右の配置位置)の4情報を データセットするようにしています! 1次元ではないとおもいますが??
horiegom

2019/08/20 02:27 編集

.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問