【问题标题】:ValueError: Error when checking target: expected dense_4 to have 2 dimensions, but got array with shape (1313, 6621, 1)ValueError:检查目标时出错:预期的 dense_4 有 2 个维度,但得到了形状为 (1313、6621、1) 的数组
【发布时间】:2021-06-15 02:05:59
【问题描述】:

我正在研究一个无监督数据集,并希望实现一个 conv1d 模型。数据集的形状为(1313, 6621)

这是我的代码

X = np.expand_dims(X, axis=2)
model = Sequential()
model.add(Conv1D(12, 3, input_shape=(6621,1),
                 padding='same', strides=1, activation='relu'))
model.add(Dropout(0.1))
model.add(Conv1D(15, 3, padding='same', strides=1, activation='relu'))
model.add(Dropout(0.2))
model.add(Conv1D(118, 3, padding='same', strides=1, activation='relu'))
model.add(Dropout(0.3))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(1, kernel_regularizer='l2', activation='sigmoid'))
print(model.summary())
model.compile(loss='sparse_categorical_crossentropy',
              metrics=['accuracy'], optimizer='adam')
model.fit(X, X, batch_size=32, epochs=5, validation_split=0.2)

但它给我一个错误

ValueError:检查目标时出错:预期 dense_4 有 2 尺寸,但得到了形状为 (1313, 6621, 1) 的数组

模型总结如下

_

________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1d_1 (Conv1D)            (None, 6621, 12)          48        
_________________________________________________________________
dropout_1 (Dropout)          (None, 6621, 12)          0         
_________________________________________________________________
conv1d_2 (Conv1D)            (None, 6621, 15)          555       
_________________________________________________________________
dropout_2 (Dropout)          (None, 6621, 15)          0         
_________________________________________________________________
conv1d_3 (Conv1D)            (None, 6621, 118)         5428      
_________________________________________________________________
dropout_3 (Dropout)          (None, 6621, 118)         0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 781278)            0         
_________________________________________________________________
dense_1 (Dense)              (None, 128)               100003712 
_________________________________________________________________
dropout_4 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 64)                8256      
_________________________________________________________________
dropout_5 (Dropout)          (None, 64)                0         
_________________________________________________________________
dense_3 (Dense)              (None, 32)                2080      
_________________________________________________________________
dropout_6 (Dropout)          (None, 32)                0         
_________________________________________________________________
dense_4 (Dense)              (None, 1)                 33        
=================================================================
Total params: 100,020,112
Trainable params: 100,020,112
Non-trainable params: 0
_________________________________________________________________
None

【问题讨论】:

    标签: python-3.x keras deep-learning conv-neural-network unsupervised-learning


    【解决方案1】:

    很简单
    在你的代码中,有一个错误,因为你的最后一层有单个神经元,将 loss 更改为binary_crossentropy

    代码如下:

    model.add(Dense(1, kernel_regularizer='l2', activation='sigmoid'))
    print(model.summary())
    model.compile(loss='binary_crossentropy',
                  metrics=['accuracy'], optimizer='adam')
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 2019-09-11
      • 2019-03-02
      • 1970-01-01
      • 2020-02-07
      • 2019-03-25
      • 2018-04-13
      • 1970-01-01
      相关资源
      最近更新 更多