【发布时间】:2020-06-30 20:12:50
【问题描述】:
我的理解是,“sparse_categorical_crossentropy”适合我的多分类,没有单热编码的情况。我还放慢了亚当学习率,以防它超出预测。
我不确定自己做错了什么。
我的输出预测结果是标签:[1 2 3 4 5 6 7 8 9 10](不是 one-hot-encoded)。每个数字代表我希望网络最终选择。
print(x_train.shape)
print(x_test.shape)
x_train = x_train.reshape(x_train.shape[0], round(x_train.shape[1]/5), 5)
x_test = x_test.reshape(x_test.shape[0], round(x_test.shape[1]/5), 5)
print(x_train.shape)
print(np.unique(y_train))
print(len(np.unique(y_train)))
input_shape = (x_train.shape[1], 5)
adam = keras.optimizers.Adam(learning_rate=0.0001)
model = Sequential()
model.add(Conv1D(512, 5, activation='relu', input_shape=input_shape))
model.add(Conv1D(512, 5, activation='relu'))
model.add(MaxPooling1D(3))
model.add(Conv1D(512, 5, activation='relu'))
model.add(Conv1D(512, 5, activation='relu'))
model.add(GlobalAveragePooling1D())
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='sparse_categorical_crossentropy', optimizer=adam, metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=32, epochs=25, validation_data=(x_test, y_test))
print(model.summary())
模型层(如果有帮助的话):
【问题讨论】:
-
所以看来你有 10 个类要预测,有 1 个密集输出和 sigmoid ?
-
你能展示
y_train的样本吗?除了单类输出,不清楚输入是否真的稀疏
标签: python tensorflow machine-learning keras conv-neural-network