2017-08-08 162 views
4

我是keras的新手,我在運行多個維度的模型時遇到問題。所以,我一直在嘗試幾個樣本。這是其中之一。
Keras的多維輸入

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) 

什麼可以這樣做的原因。任何人都可以舉例說明如何使用多維輸入運行keras模型,即應該如何構建輸入?謝謝。

回答

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輸入。在輸出層單元數(只有一個)應與班數,並使用合適的激活功能(如「SOFTMAX」)

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

嘗試看看在多層感知器(MLP)的多級softmax分類: https://keras.io/getting-started/sequential-model-guide/

+0

謝謝,答案清除了一些東西。很長的路要走:) –