【发布时间】:2018-02-06 10:50:18
【问题描述】:
我是机器学习和 Keras 的新手。实际上,我使用过 scikit-learn,但 Keras 似乎有点复杂。我的问题是我有一些 3D 数据并希望将其放入密集层(我也尝试过使用 Conv2D 和 Conv1D 层)。 我所做的如下:
arr1 = np.random.random((30,2))
arr2 = np.random.random((30,2))
arr3 = np.random.random((30,2))
arr4 = np.random.random((30,2))
arr5 = np.random.random((30,2))
arr6 = np.random.random((30,2))
x_matrix = np.dstack(
(arr1
,arr2
,arr3
,arr4
,arr5
,arr6)
).swapaxes(1,2)
print(x_matrix.shape)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x_matrix, y_matrix, test_size=0.33, random_state=42)
from keras.models import Sequential
model = Sequential()
from keras.layers import Dense, Conv2D, Conv1D, Flatten
model = Sequential()
model.add(Dense(6, activation='sigmoid', input_shape=(6,2)))
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
model.fit(np.array(X_train), np.array(y_train), epochs=20, batch_size=1)#
score = model.evaluate(X_test, y_test)
print(score)
而且我在 fit 步骤中遇到了错误。错误如下:
ValueError: Error when checking target: expected dense_1 to have 3 dimensions, but got array with shape (20, 2)
对于 Conv1D 层,我尝试了这个:
model.add(Conv1D(6, (2), activation='sigmoid', input_shape=(6 ,2)))
并想出了错误:
ValueError: Error when checking target: expected conv1d_1 to have 3 dimensions, but got array with shape (20, 2)
Conv2D 看起来更复杂,我可能不需要它作为我的输入层,但使用下面的调用我仍然有同样的错误。
model.add(Conv2D(6, (2,2), activation='sigmoid', input_shape=(20,6 ,2)))
ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (20, 6, 2)
我要问的是:如何使用 Keras 将这样的数据拟合到神经网络中?
【问题讨论】:
-
输入训练数据的实际形状是什么?如果它的 (20, 2) 它似乎不是 3D。
-
现在是 (30, 6, 2)
标签: python neural-network keras conv-neural-network keras-layer