【发布时间】:2020-11-06 19:59:21
【问题描述】:
我正在尝试重写一个用于对卫星图像进行分类的 keras 模型,该模型是一个 NN 模型,我想将其重写为 CNN,我从 here 找到了该模型。
之前的NN模型是这样的:
model = keras.Sequential([
keras.layers.Flatten(input_shape=(1, nBands)),
keras.layers.Dense(14, activation='relu'),
keras.layers.Dense(2, activation='softmax')])
原图形状是6, 2054, 2044,reshape成二维数组后变成(2519025, 6),根据文章,reshape的原因是:
我们现在将数组的形状更改为二维数组,这是大多数 ML 算法所期望的,其中每一行代表一个像素。
然后它再次被重新塑造,(2519025, 1, 6)
我使用Conv1D 作为这样的转换层
model = keras.Sequential([
keras.layers.Conv1D(filters=64, kernel_size=(3), activation='relu', padding = 'same',input_shape=(2519025, 6)),
keras.layers.Dense(128, activation='relu',kernel_initializer='glorot_normal'),
keras.layers.Dense(2, activation='softmax')])
我这样称呼模型:
model.fit(xTrain, yTrain, epochs=2,batch_size=10)
xTrain 和 yTrain 的形状是
(2519025, 1, 6) (1679351, 1, 6)
我得到了这个 Waring:
ARNING:tensorflow:Model 是用形状 (None, 2519025, 6) 构造的输入 Tensor("conv1d_input:0", shape=(None, 2519025, 6), dtype=float32),但它是在一个形状不兼容的输入 (None, 1, 6)。
该模型的正确 input_shape 是什么,或者我如何更改该 NN 模型以使用 CNN?
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning