2017-08-04 9 views
3

を持つ配列を得た私は、次のコードを持って、期待形状(なし、8)が、形状(8,1)

from keras.models import Sequential 
from keras.layers import Dense 
import numpy as np 

# load dataset 
dataset = np.loadtxt("data.csv", delimiter=",") 
# split into input (X) and output (Y) variables 
X = dataset[:, 0:8] 
Y = dataset[:, 8] 
# create model 
model = Sequential() 
model.add(Dense(8, activation="relu", input_dim=8, kernel_initializer="uniform")) 
model.add(Dense(12, activation="relu", kernel_initializer="uniform")) 
model.add(Dense(1, activation="sigmoid", kernel_initializer="uniform")) 
# Compile model 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 
# Fit the model 
model.fit(X, Y, epochs=150, batch_size=10, verbose=2) 
# calculate predictions 
test = np.array([6,148,72,35,0,33.6,0.627,50]) 
predictions = model.predict(test) 
# round predictions 
rounded = [round(x[0]) for x in predictions] 
print(rounded) 

私はプログラムを実行すると、それは私に、次のエラーが発生します。私はこの質問への重複がたくさんいることを知っている

ValueError: Error when checking : expected dense_1_input to have shape (None, 8) but got array with shape (8,1)

は、私はそれらのすべてを試してみましたが、それはまだ私に同じエラーが発生します。どうすれば解決できますか?

答えて

3

本家我々は完全なエラー・トレースが表示されていない、私はモデルが学習することを考えると、エラーがラインに来る:

predictions = model.predict(test) 

はこれを確認してください。

いつもネットワークにフィードする必要があるのは、形状が数字の配列(number_of_samples_to_predict, input_shape)であるため、予測が失敗します。 冒頭に常に追加のディメンションがあります。ここで、予測するすべてのサンプルを重ねます。サンプルが1つしかない場合は、配列[1, input_shape]をフィードする必要があります。

このようなあなたのテスト入力を定義し、この使用を修正するには:

test = np.array([[6,148,72,35,0,33.6,0.627,50]]) 

今テストでは、モデルが(?,8)を期待して実行する必要があり形状(1,8)を持っています。

+0

はい、あなたの前提は正しかった。ありがとうございました! –

関連する問題