機械学習で次のエラーが出ます。
could not broadcast input array from shape (2,1) into shape (2)
以下コードとCSVファイルです。
import tensorflow as tf import tensorflow.contrib.keras as keras from sklearn.model_selection import train_test_split import pandas as pd import numpy as np # データの読み込み --- (*1) analysisresults_data = pd.read_csv("analysis_resultstable_BX.csv",encoding="utf-8") # データをラベルと入力データに分離する y = analysisresults_data.loc[:,"Result"] x = analysisresults_data.loc[:,["Signatures_id","Hit_count"]] # 学習用とテスト用に分割する --- (*2) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, train_size = 0.8, shuffle = True) # モデル構造を定義 --- (*3) Dense = keras.layers.Dense model = keras.models.Sequential() model.add(Dense(10, activation='relu', input_shape=(1,))) model.add(Dense(2, activation='softmax')) # ---(*3a) # モデルを構築 --- (*4) model.compile( loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 学習を実行 --- (*5) model.fit(x_train, y_train, batch_size=20, epochs=300) # モデルを評価 --- (*6) score = model.evaluate(x_test, y_test, verbose=1) print('正解率=', score[1], 'loss=', score[0])
また試したこととして
(1)
could not broadcast input array from shape (2,1) into shape (2)
は入力の型と入力層のユニットがあっていないためとアドバイスをもらい。
model.add(Dense(10, activation='relu', input_shape=(2,)))
をしましたがダメでした。
(2)
【原因】
fit及びevaluateで渡しているy_train, y_testの形状とネットワークの出力の形状が異なる。
【対策】
ネットワーク定期の二つ目のDenseを2→1に変更。
activationをsoftmax→sigmoidに変更。
lossをcategolical_crossentropy→crossentropyに変更。
をしましたがダメでした
何かこの機械学習ディープラーニングを実行できる方法をわかる方がいましたら教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/25 03:59
2019/10/25 05:06