python - Keras 中的 S 形层

标签 python machine-learning neural-network keras sigmoid

我有一个值列表,范围从 1500025000。我必须将它们分为两类,这样(大约)20000 将最终归入第 1 类,其余归入第 2 类。我发现 sigmoid 激活应该适用于此。为此,我在 keras 中使用了以下层:

模型=顺序()

model.add(Dense(1 , input_dim =1 ))
model.add(Activation('sigmoid'))
model.add(Dense(2 , init='normal' , activation = 'softmax'))
model.compile(loss='mean_absolute_error', optimizer='rmsprop')
model.fit(X_train, y_train, validation_data=(X_test, y_test),epochs=10,batch_size=200,verbose=2)

但是,当我为示例案例运行模型时,所有值最终都属于类别 2。我该如何改进它?

最佳答案

如果您有一个介于 15000 和 25000 之间的值列表,那么 sigmoid 将为您提供接近 1.0 的所有这些值。 sigmoid 将所有东西压缩到 0 和 1 之间,因此像这样的非常大的值将逐渐接近 1。快速而肮脏的测试表明:

>>> import math
>>> def s(x):
...     return 1.0/(1.0+math.exp(-x))
... 
>>> s(15000)
1.0
>>> s(25000)
1.0

要么对值进行归一化(这应该不难,因为您知道范围),要么使用不同的激活函数。

当您提到其中 20000 个将归入一个类别而其余的归入另一个类别时,问题有点模棱两可,所以如果您的意思是您有 15000 到 25000 个值(不是指值的值)那些需要分类的,那没关系

关于python - Keras 中的 S 形层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45442843/

相关文章:

python - 为什么我用 Suds 得到 "Exception: (404, u' Not Found')"

python - 当 .csv 文件保存在 Python 中的 .zip 文件中时,如何从 url 中抓取 .csv 文件?

python - 如何将复杂的Excel表格数据转换为结构化数据?

python - 在 scikit-learn 中训练神经网络时提前停止

keras - LSTM 时间序列产生偏移预测?

python - 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

python - PyPy 的垃圾收集器需要阻止世界吗?

python - 为二进制分类任务嵌入分类数据的正确方法是什么

algorithm - KMeans 评估指标不收敛。这是正常行为还是不正常?

matlab - Octave /Matlab错误