我正在閱讀有關 NN 的內容,并且還想同時生成我的第一個 NN(以補充我的閱讀內容)。我有一個這樣的數據集:DNA_seq Sample1Name Sample1Name ConcOfDNAInSample DNASeqFoundInProcessCatAGGAG cat_0 cat_1 0.1 found_in_0 AGGAG cat_1 cat_2 0.4 found_in_3ACCCC cat_1 cat_7 0.1 found_in_2AGAGAGA cat_2 cat_10 1.9 found_in_1ADAS cat_332 cat_103 8.9 found_in_1列:DNASeq -> 一串 DNA 序列(即“序列”)Sample1Name -> 分類值,解釋 DNASeq 所在溶液的化學性質。Sample2Name -> 分類值,解釋 DNASeq 所在溶液的化學性質。ConcOfDNAInSample -> Sample2SName 中 DNA 濃度的定量值。DNASeqFoundInProcessCat -> 這是我要預測的標簽。它是一個具有四個類別(found_in_0 -> found_in_3)的分類值。這是我對每個 DNASeq 進行三個測試以查看我是否操縱原始解決方案(即 found_in_0)的輸出,DNASeq 是否仍然存在。我的問題:對于一組看不見的序列,我希望輸出標簽集是“found_in_1”、“found_in_2”、“found_in_3”的多類概率。即,如果上面的示例是我的測試集的輸出,那么我的輸出理想情況下應該是這樣的:DNA_seq Sample1Name Sample1Name ConcOfDNAInSample DNASeqFoundInProcessCatAGGAG cat_0 cat_1 0.1 (0.9,0.5,0.1) AGGAG cat_1 cat_2 0.4 (0.8,0.7,0.3)ACCCC cat_1 cat_7 0.1 (0.2,0.5,0.3)AGAGAGA cat_2 cat_10 1.9 (0.7,0.2,0.9)ADAS cat_332 cat_103 8.9 (0.6,0.8,0.7)有一些注意事項:有可能因為我正在做的過程,一些序列不能在原始解決方案中(found_in_0),但是因為 DNA 位可以粘在一起,它們隨后可以在其他類中(found_in_1、found_in_2、found_in_3 )我只對found_in_1、found_in_2 和found_in_3 類的輸出感興趣(即我想要最后的三類概率,而不是found_in_0 的四類概率)。我能夠從 DNA 序列中生成其他特征,這只是一個例子。從我的數據可以看出,我的數據集是不平衡的,found_in_3中的數據量明顯低于其他(我的完整訓練數據大約80000行;但是其中只有大約10000行是found_in_3;其他的都是found_in_0、found_in_1 或 found_in_2)。我要解決的是算法,特別是針對一個特定點。我的想法是:1.讀入數據。df = pd.read_csv('data')2.將數據集拆分為訓練和測試import sklearnfrom sklearn.model_selection import train_test_splitX_train,X_test,Y_train,Y_test = train_test_split(X,y,test_size=0.2,random_state=42)3.了解數據集(即我在上面第 4 點中看到的代表性不足的地方)。我有一系列的功能......所以假設我有一個標準化的數據集,即上表。所以我知道我想為我的數據復制一組類似的步驟,并且我正在嘗試解決如何做到這一點,我無法理解的是我是否必須使用 tf.nn.sigmoid_cross_entropy_with_logits 來解決這個問題(因為每個輸入都可以屬于移動而不是一個標簽,即可以存在于found_in_1、found_in_2和found_in_3中,這可以產生每個類的概率輸出?)或者我可以只使用這樣的softmax函數嗎?
3 回答

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
如果每個輸入可以屬于多個標簽/類,則需要使用tf.nn.sigmoid_cross_entropy_with_logits
. 如果您sigmoid
在模型輸出上使用,您將獲得標簽3
的概率。您可以在此處3
閱讀更多詳細信息。

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊

藍山帝景
TA貢獻1843條經驗 獲得超7個贊
經驗法則:假設您有多個類/標簽,每個樣本是否恰好屬于一個類(只有一個標簽)?
是的:多類。使用 softmax 進行激活,使用 [sparse] 分類交叉熵進行損失。
不,對象可以同時屬于多個類:多標簽。使用 sigmoid 進行激活,使用二元交叉熵進行損失。
根據描述,我不確定您的情況是什么情況。
添加回答
舉報
0/150
提交
取消