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

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

ただいまの
回答率

88.03%

KerasのConv2Dレイヤーでinput_shapeにおいて

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 120

score 4

google colaboratry において以下のようなエラーメッセージが出てきました。
これはconv2dがエラーを出していると予想しているのですが、ここからそーすればいいのか調べてもよくわからなかったので、ご質問させていただきました。
エラー コード

ValueError: Input 0 of layer conv2d_1 is incompatible with the layer: : expected min_ndim=4, found ndim=1. Full shape received: (None,)


今回のコードは以下のようなものです。

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
import os, time, sys, math
from google.colab import drive
drive.mount('/content/drive')


path = "/content/drive/My Drive/Colab Notebooks/kera_lesson_making_colab_ver/folder"
classes =os.listdir(path)
num_classes = len(classes)
image_size = 50


# メインの関数を定義する
def main():
    X_train, X_test, y_train, y_test = np.load("/content/drive/My Drive/Colab Notebooks/kera_lesson_making_colab_ver/judge.npy", allow_pickle=True) # %ファイルからデータを持ってくる
    X_train = X_train.astype("float") / 256  # %少数型になおしてから
    X_test = X_test.astype("float") / 256  # %計算のブレをなくすために最大値で割ってみる
    y_train = np_utils.to_categorical(y_train, num_classes)  # %正解値は1、他は0。2(crow)なら「001」となる
    y_test = np_utils.to_categorical(y_test, num_classes)# %

    model = model_train(X_train, y_train)
    model_eval(model, X_test, y_test)


# %kerasの『cifer10_cnn.py』というファイルを参考にしている
def model_train(X, y):
    model = Sequential()
    model.add(Conv2D(32, (3, 3), padding='same', input_shape=X.shape[1:]))# %1層目のこと
    model.add(Activation('relu'))# %正のところだけを持ってくる
    model.add(Conv2D(32, (3, 3)))# %2層目
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    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.5))
    model.add(Dense(num_classes))
    model.add(Activation('softmax'))

    opt = keras.optimizers.RMSprop(lr=0.0001, decay=1e-6)

    model.compile(loss='categorical_crossentropy',
                  optimizer=opt, metrics=['accuracy'])

    model.fit(X, y, batch_size=32, epochs=100)

    # モデルの保存
    model.save('/content/drive/My Drive/Colab Notebooks/kera_lesson_making_colab_ver/food_girls_cnn.h5')

    return model# %20行目に返す

def model_eval(model, X, y):
    scores = model.evaluate(X, y, verbose=1)
    print('Test Loss: ', scores[0])
    print('Test Accuracy:', scores[1])

if __name__ == "__main__":
    main()


ぜひ回答していただけるとありがたいです。
よろしくお願いします

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • aipy2020

    2021/02/28 22:37

    conv2dの入力であるX_trainのshapeが4次元になっていないというエラーです。

    print(X_train.shape)
    を記載して、X_trainのshapeを確認してはいかがでしょうか。
    エラーからは(None,)になっているように見えます。
    読み込んでいるファイルjudge.npyがおかしいのかもしれません。

    キャンセル

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

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

  • ただいまの回答率 88.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る