Reo*_*mai 2 python machine-learning deep-learning keras sigmoid
这是我的代码的一部分。
model = Sequential()
model.add(Dense(3, input_shape=(4,), activation='softmax'))
model.compile(Adam(lr=0.1),
loss='categorical_crossentropy',
metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
使用此代码,它将立即将softmax应用于所有输出。因此,输出表明了所有可能性。但是,我正在研究非排他性classifire,这意味着我希望输出具有独立的概率。抱歉,我的英语不好。但是,我想做的是对每个输出应用sigmoid函数,以便它们具有独立的概率。
无需创建3个单独的输出(如已接受的答案所建议)。
只需一行就可以达到相同的结果:
model.add(Dense(3, input_shape=(4,), activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)
您可以仅'sigmoid'在最后一层使用激活:
from tensorflow.keras.layers import GRU
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation
import numpy as np
from tensorflow.keras.optimizers import Adam
model = Sequential()
model.add(Dense(3, input_shape=(4,), activation='sigmoid'))
model.compile(Adam(lr=0.1),
loss='categorical_crossentropy',
metrics=['accuracy'])
pred = model.predict(np.random.rand(5, 4))
print(pred)
Run Code Online (Sandbox Code Playgroud)
输出独立概率:
[[0.58463055 0.53531045 0.51800555]
[0.56402034 0.51676977 0.506389 ]
[0.665879 0.58982867 0.5555959 ]
[0.66690147 0.57951677 0.5439698 ]
[0.56204814 0.54893976 0.5488999 ]]
Run Code Online (Sandbox Code Playgroud)
如您所见,类的概率彼此独立。乙状结肠分别应用于每个类别。