2017-08-08 21 views
4

ケラスを初めて使用しています。複数の次元を持つモデルを実行する際に問題が発生しています。だから私はいくつかのサンプルを試しています。これはその一つです。 ケラスへの多次元入力

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

X_train = np.array([[[1, 2], [3, 4]], [[1, 2], [3, 4]]]) 
model = Sequential([ 
    Dense(32, input_shape=X_train.shape[1:]), 
]) 
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd') 
model.fit(X_train, [1, 2]) 



は、私は上記のサンプルを実行するために期待するが、私はこの理由することができどのようなエラー

Error when checking target: expected dense_1 to have 3 dimensions, but got array with shape (2, 1) 

を取得しています。誰でも多次元入力を使用してケラスモデルを実行する方法の例を挙げることができます。つまり、入力をどのように構造化する必要がありますか?ありがとうございました。

答えて

4

私はあなたがワンホットすなわち使用して、あなたの出力クラスをコードしていることを示唆している:

# Convert labels to categorical one-hot encoding 
labels = np.array([1, 2]) # 0 - num_classes - 1 
y_train = keras.utils.to_categorical(labels, num_classes=3) 

をそして代わりに「sparse_categorical_crossentropy」の「categorical_crossentropy」を使用:

model.compile(loss='categorical_crossentropy', 
       optimizer=sgd, 
       metrics=['accuracy']) 

が最後にあなたが平らにすべきです2D出力(サンプルxクラス)が必要な場合は、ある時点での3D入力。出力層のユニット数(あなたが1つしかない)クラスの数と一致し、適切な活性化機能(例えば「ソフトマックス」)を使用する必要があります

model.add(Flatten(input_shape=X_train.shape[1:])) 
model.add(Dense(3, activation='softmax')) 

多層パーセプトロン(MLP)を見ているようにしてくださいについてマルチクラスソフトマックスの分類: https://keras.io/getting-started/sequential-model-guide/

+0

ありがとう、答えはいくつかをクリアします。長い道のり:) –

関連する問題