我正在尝试使用tf keras进行多类分类。我总共有20个标签,总数据为63952
,并且尝试了以下代码
features = features.astype(float)
labels = df_test["label"].values
encoder = LabelEncoder()
encoder.fit(labels)
encoded_Y = encoder.transform(labels)
dummy_y = np_utils.to_categorical(encoded_Y)
然后
def baseline_model():
model = Sequential()
model.add(Dense(50, input_dim=3, activation='relu'))
model.add(Dense(40, activation='softmax'))
model.add(Dense(30, activation='softmax'))
model.add(Dense(20, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
最终
history = model.fit(data,dummy_y,
epochs=5000,
batch_size=50,
validation_split=0.3,
shuffle=True,
callbacks=[ch]).history
我对此很不满意。我该如何改善呢?
答案 0 :(得分:2)
softmax
激活根本没有任何意义。将它们全部更改为relu
并仅在最后一层保留softmax
。
这样做之后,如果您仍然无法获得令人满意的精度,请尝试以较短的时期(例如〜50)尝试不同的架构(不同的层和节点数),以了解模型的方式行为,然后完全适应您的5,000个纪元。
答案 1 :(得分:1)
您没有向我们提供重要信息,但以下是一些准则:
1.减少Dense
层的数量-您拥有一个包含少量数据的复杂层(63k有点小)。您可能会在火车数据上过拟合。
2.您检查过测试是否与火车的分布相同?
3.避免在中间Dense
层中使用softmax-应在最后一层中使用softmax,而应使用S型或relu。
4.根据历时曲线绘制损失曲线,并检查其是否减少-然后您可以了解学习率是太高还是太小。