前提・実現したいこと
kerasを使って学習させようとするとinputエラーがでる。
参考URL
30行2列のcsvファイルの数値データがあり、それらにラベルをつけモデルに学習させようとしています。
このような5exa.csvがあります
その参照しているcsvファイルの中身がこのように30行×2列です。
まず5exa.csvのx:dataの名前にmageがあったら、ラベルを0にしてtwistがあったらラベルを1にして。。。という風にラベルを順番に保存します。
また参照する30行2列を順番に
60行のnp.arrayに変換して
image_list = []に代入
するプログラムを書き学習させる段階でエラーがでました。
発生している問題・エラーメッセージ
ValueError: Error when checking input: expected dense_55_input to have shape (60,) but got array with shape (1,)
該当のソースコード
# 学習用のデータを作る. image_list = [] label_list = [] #評価用のcsvファイル読み込み df = pd.read_csv(filepath_or_buffer="5exa.csv", encoding="ms932", sep=",") #iterrowsで行ごとに読み、rowに保存 for index, row in df.iterrows(): data = np.loadtxt(row["x:data"], # 読み込みたいファイルのパス delimiter=",", # ファイルの区切り文字 skiprows=0, # 先頭の何行を無視するか(指定した行数までは読み込まない) usecols=(0,1) # 読み込みたい列番号 ) #もし読み込んだファイル名にmageがあれば if ('mage'in row["x:data"]): label = 0 #もし読み込んだファイル名にtwistがあれば if ('twist'in row["x:data"]): label = 1 #もし読み込んだファイル名にnoneがあれば if ('none'in row["x:data"]): label = 2 #もし読み込んだファイル名にwalkがあれば if ('walk'in row["x:data"]): label = 3 #もし読み込んだファイル名にrunがあれば if ('run'in row["x:data"]): label = 4 np.set_printoptions( floatmode='fixed') #デバック用 # print(row["x:data"]) #print("------------------------------------------") #print(data) # print("------------------------------------------") # #データを60行一列に image_list.append(np.reshape(data,(60,1))) label_list.append(label) # ラベルの配列を1と0からなるラベル配列に変更 # 0 -> [1,0], 1 -> [0,1] という感じ。 Y = to_categorical(label_list) # モデルを生成してニューラルネットを構築 model = Sequential() model.add(Dense(200, input_dim=60)) model.add(Activation("relu")) model.add(Dropout(0.2)) model.add(Dense(200)) model.add(Activation("relu")) model.add(Dropout(0.2)) model.add(Dense(5)) model.add(Activation("softmax")) # オプティマイザにAdamを使用 opt = Adam(lr=0.001) # モデルをコンパイル model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # 学習を実行。10%はテストに使用。 model.fit(image_list, Y, nb_epoch=1500, batch_size=10, validation_split=0.1)
試したこと
モデルを生成してニューラルネットを構築
model = Sequential()
model.add(Dense(200, input_dim=1))
とすると
ValueError: Input arrays should have the same number of samples as target arrays. Found 60 input samples and 12 target samples.
というエラーになります
どこを改善すべきなのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。