2017-10-21 8 views
0

"ValueError:入力をチェックしているときにエラーが発生しました:dense_4_inputがshape(None、5)を持っていると思われましたが、shape(5、1)の配列を持っていました... " これは私が実行しているコードです。単純なML Algoが機能していない:ValueError:入力をチェックするときにエラーが発生する:dense_4_inputがshape(なし、5)を持っているが、形状(5,1)を持つ配列がある

import numpy as np 
import matplotlib.pyplot as plt 
from keras.models import Sequential 
from keras.layers import Dense 
x = np.array([[1],[2],[3],[4],[5]]) 

y = np.array([[1],[2],[3],[4],[5]]) 
x_val = np.array([[6],[7]]) 
x_val = np.array([[6],[7]]) 
model = Sequential() 
model.add(Dense(1, input_dim=5)) 
model.compile(optimizer='rmsprop', loss='mse') 
model.fit(x, y, epochs=2, validation_data=(x_val, y_val)) 

答えて

2

は二つの問題があります。

まず:出力はすでに言うように:"ValueError: Error when checking input: expected dense_4_input to have shape (None, 5) but got array with shape (5, 1)"これは、ニューラルネットワークは、形状の配列を期待していること、を意味します(* 5)。アスタリスクを使用して、私は次元がユーザーによって自由に選択できることを示したいと思います。あなたがたくさんのデータを持っていて、すべての例が形のベクトル(1、5)であるとすれば、それらをすべて下に積み重ねることができ、大きなネットチャンクをニューラルネットに渡すことができます。したがって、あなたは次のようにxに行ベクトルを作成する必要があります。

x = np.array([[1,2,3,4,5]]) 

Keras docs- Specifying the input shapeでも参照してください。

第2の:第1層の出力を1に指定します。つまり、5次元入力は1つのニューロンにのみ接続されます。出力ベクトルyには5つの値があります。だからあなたの出力ベクトルの次元とあなたの神経細胞の出力が一緒に収まりません。 だから、あなたがスカラーyに行かなければならない:

y = np.array([1]) 

をさらに、あなたの検証データとトレーニングデータは、同じ次元を持つ必要があります。さらに、コードに誤字があります:y_valは決して定義されていません。

+0

ありがとうございました! – user2162942

関連する問題

 関連する問題