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

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

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

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

Python 3.x

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

解決済

「Error when checking model input」のエラーで困っています

tsurutake
tsurutake

総合スコア13

NumPy

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

Python 3.x

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

1回答

0評価

0クリップ

19926閲覧

投稿2017/07/15 20:10

編集2017/07/16 12:35

###前提・実現したいこと
PythonでUnityのシミュレーターを動かしたいが、コンパイルできずに止まってしまっています。
エラーを解決してシュミレーションしたいです。

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

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-8-0c1d7921604c> in <module>() 33 34 model.compile(optimizer='adam', loss='mse') ---> 35 model.fit(X_train,y_train,validation_split=0.2,shuffle=True) 36 model.save('model.h5') C:\Users\kom\Anaconda3\envs\carnd-term1\lib\site-packages\keras\models.py in fit(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs) 670 class_weight=class_weight, 671 sample_weight=sample_weight, --> 672 initial_epoch=initial_epoch) 673 674 def evaluate(self, x, y, batch_size=32, verbose=1, C:\Users\kom\Anaconda3\envs\carnd-term1\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch) 1115 class_weight=class_weight, 1116 check_batch_axis=False, -> 1117 batch_size=batch_size) 1118 # prepare validation data 1119 if validation_data: C:\Users\kom\Anaconda3\envs\carnd-term1\lib\site-packages\keras\engine\training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_batch_axis, batch_size) 1028 self.internal_input_shapes, 1029 check_batch_axis=False, -> 1030 exception_prefix='model input') 1031 y = standardize_input_data(y, self.output_names, 1032 output_shapes, C:\Users\kom\Anaconda3\envs\carnd-term1\lib\site-packages\keras\engine\training.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix) 110 ' to have ' + str(len(shapes[i])) + 111 ' dimensions, but got array with shape ' + --> 112 str(array.shape)) 113 for j, (dim, ref_dim) in enumerate(zip(array.shape, shapes[i])): 114 if not j and not check_batch_axis: ValueError: Error when checking model input: expected flatten_input_7 to have 4 dimensions, but got array with shape (2279, 1)

###該当のソースコード(Python3.5)

Python3.5

import csv import cv2 import numpy as np lines = [] with open('./data/driving_log.csv') as csvfile: reader = csv.reader(csvfile) for line in reader: lines.append(line) images = [] measurements = [] for line in lines: source_path = line[0] tokens = source_path.split('/') filename = tokens[-1] local_path = "\data\IMG\" + filename image = cv2.imread(local_path) images.append(image) measurement = line[3] measurements.append(measurement) X_train = np.array(images) y_train = np.array(measurements) import keras from keras.models import Sequential from keras.layers import Flatten, Dense model = Sequential() model.add(Flatten(input_shape=(160,320,3))) model.add(Dense(1)) model.compile(optimizer='adam', loss='mse') model.fit(X_train,y_train,validation_split=0.2,shuffle=True) model.save('model.h5')

###試したこと
1.Stackoverflowにて同じような問題があり、参考にしようとしましたが、解決方法が最後まで書いてありませんでした。
URL:https://stackoverflow.com/questions/42770997/error-when-checking-model-input-expected-flatten-input-8-to-have-4-dimensions
2.参考にしていた動画はMacでプログラミングしていたので、エラーが出ているファイルパスの箇所の「\」が問題だと思いましたが、Windowsとの違いが分かりませんでした。このエラーが発生する前のcsvファイルを読み込むところは動画内と同じでしたので、さほど違いがあるようには思えませんが、実際のところ良く分かっていません。
###補足情報(言語/FW/ツール等のバージョンなど)
Windoes7 64bit Professional

Youtube動画内キャプチャ画面

回答から以下を追記

3.「model.add(Flatten(input_shape=(160,320,3)))」→→→「model.add(Flatten(input_shape=(1,160,320,3)))」へ修正して再度コンパイルしてみました。すると
「Error when checking model input: expected flatten_input_1 to have 5 dimensions, but got array with shape (1888, 1)」とエラーが表示され、dimensionsが異なっていることが分かりました。
上記の画像のファイルパスと「X_train」の中身を確認してみました。すると
---↓↓↓ファイルパス↓↓↓---
./data/IMG/C:\Users\kom\AnacondaProjects\CarND-Behavioral-Cloning-P3-master\data\IMG\center_2017_07_16_16_26_04_663.jpg
./data/IMG/C:\Users\kom\AnacondaProjects\CarND-Behavioral-Cloning-P3-master\data\IMG\center_2017_07_16_16_26_04_766.jpg
[None None None ..., None None None]
---↑↑↑X_trainの中身↑↑↑---
が出力されました。これはX_trainをresizeしなければならないのでしょうか。
大変恐縮でございますが、ご指導頂きたく。ご回答の程宜しくお願いします。

自己解決しました。以下に内容を述べます。
###自己解決したソースコード(Python3.5)

Python3.5

import csv import cv2 import numpy as np import keras from keras.models import Sequential from keras.layers import Flatten, Dense lines = [] with open('C:/Users/kom/Desktop/data/driving_log.csv') as csvfile: reader = csv.reader(csvfile) for line in reader: lines.append(line) images = [] measurements = [] for line in lines: source_path = line[0] filename = source_path.split('\\')[-1] current_path = "C:/Users/kom/Desktop/data/IMG/" + filename image = cv2.imread(current_path) images.append(image) measurement = float(line[3]) measurements.append(measurement) X_train = np.array(images) y_train = np.array(measurements) model = Sequential() model.add(Flatten(input_shape=(160,320,3))) model.add(Dense(1)) model.compile(optimizer='adam', loss='mse') model.fit(X_train,y_train,validation_split=0.2,shuffle=True, nb_epoch=10) model.save('model.h5')

変更箇所は以下の2点です。若干コードの中身は変わっています。参考にした動画はMacからAWSを使用していましたが、自分のPCはWindowsを使用していたので、ファイルパスの指定がcsvとファイルでは異なることにピンときて修正したところコンパイルできました。
1.(変更前)with open('./data/driving_log.csv') as csvfile:
(変更後)with open('C:/Users/(自分のPCユーザー名)/Desktop/data/driving_log.csv') as csvfile:
2.(変更前)local_path = "\data\IMG" + filename
(変更後)current_path = "C:/Users/kom/Desktop/data/IMG/" + filename
無事シミュレーターに反映されたので、とりあえず一安心です。

-以上-

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

NumPy

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

Python 3.x

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