我用 Keras 创建了一个 Conv1D 模型,并在训练期间用 ValueError 提示我。我不太明白模型在哪里有问题。
我试图将数据形状修改为 (3780,6,1) 但仍然提示我 conv1d_46_input 有 3 个维度,但得到了形状为 (3780, 6) 的数组
def baseline_model():
model = models.Sequential()
model.add(layers.Conv1D(1, 5, input_shape=(6,1), activation="tanh"))
model.add(layers.MaxPool1D(pool_size=2))
model.add(layers.core.Flatten())
model.add(layers.Dense(2))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
return model
# df is pandas DataFrame
X = np.array(df[['rp', 'x', 'y', 'class', 'at', 'dt']], dtype=np.float64)
y = np.array(df[['ap', 'dp']], dtype=np.float64)
# X = np.expand_dims(X, -1)
# y = np.expand_dims(y, -1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=100)
mode = baseline_model()
history = mode.fit(X_train, y_train, epochs=200, batch_size=32, validation_data=(X_test, y_test))
X=np.array([[-69.3078, 0. , 1. , 1. , 90. , 90. ],
[-69.4585, 0. , 2. , 1. , 90. , 90. ],
[-69.4776, 0. , 3. , 1. , 90. , 90. ],
...,
[-65.8291, 35. , 33. , 1. , 90. , 90. ],
[-71.0137, 35. , 34. , 1. , 90. , 90. ],
[-67.2308, 35. , 35. , 1. , 90. , 90. ]])
y=np.array([[ 15.4463, -17.5046],
[ 15.4777, -17.536 ],
[ 15.5092, -17.5675],
...,
[ 15.8361, -17.8944],
[ 15.8809, -17.9392],
[ 15.9259, -17.9842]])
# X,y type is numpy array
# X shape is (4725, 6) ,y shape is (4725, 2)
# X[0] shape is (6,) , y[0] shape is (2,)
ValueError:检查输入时出错:预期 conv1d_46_input 有 3 个维度,但得到了形状为 (3780, 6) 的数组
你的第一个 Conv 层需要一个看起来像 (Batch_size, dim1, dim2) 的数据 Dim 这里你有一个 (3780, 6) 的 X 形状,所以有 3780 个 dim 6 数组,但你需要有 3780 个 dim (6 , 1)。
为了做到这一点,你可以简单地扩大你的 X 的暗淡,这样做:
X = np.expand_dims(X, -1)
这将添加您需要的额外维度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句