Je lis sur NN et je voudrais également générer mon premier NN en même temps (pour compléter ma lecture).
J'ai une donnée de données comme ceci: p> colonnes: p> Ma question:
Pour un ensemble invisible de séquences, je souhaite que l'ensemble de sorties d'étiquettes soit une probabilité multi-classes de 'Found_in_1', 'Found_in_2', 'Found_in_3'. P> I.e. Si l'exemple ci-dessus était la sortie de mon ensemble de test, ma sortie ressemblerait parfaitement à ceci: p> Il y a quelques notes: p> Il est possible qu'en raison des processus que je fais, que certaines séquences ne peuvent pas être dans la solution d'origine (Found_in_0), mais puisque parce que les morceaux d'ADN peuvent rester ensemble, ils peuvent ensuite être dans les autres classes (Found_in_1, Found_in_2, Found_IN_3) P> LI>
Je ne suis intéressé que par la sortie de la classe Found_in_1, Found_2 et Found_IN_3 (I.E. Je veux une probabilité de trois classes à la fin, pas une probabilité de quatre classes avec Found_in_0). P> LI>
Je suis capable de générer d'autres fonctionnalités des ADN SEQS, ceci est juste un exemple. p> li>
Je peux voir de mes données, que mon ensemble de données est déséquilibré, la quantité de données dans Found_in_3 est significativement inférieure à celle des autres (mes données de formation complètes sont d'environ 80 000 rangées; mais seulement environ 10 000 de ces lignes sont Found_in_3; les autres sont tous Found_in_0, Found_in_1 ou Found_in_2). P> LI>
ol> Ce que j'essaie de travailler est l'algorithme, pour un point spécifique en particulier. Mon idée était la suivante: p> 1.fin dans les données. P> 2 .Split les données définies dans TRAIN et TEST P>
df = pd.read_csv ('"données") code> p>
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(8,input_dim=4,activation='relu'))
model.add(Dense(8,input_dim=4,activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
model.fit(x_train,y_train, epochs=150,verbose=0)
3 Réponses :
Il y a une différence fondamentale entre D'autre part, Une explication plus détaillée peut être trouvée par exemple ici . Je suppose que ce que vous êtes après est softmax code> et
sigmoid_cross_tropy_with_logits code>. Le premier s'applique fonction Softmax . En substance, vous fournissez des scores non formés (logits) d'entrée et des émissions de sortie des valeurs normalisées pouvant être interprétées comme probabilités. p>
sigmoid_cross_tropy_with_logits code> vous obtiendra d'abord un sigmoïde, puis calculer une entropie croisée (contre
Labales code>, son premier argument!) de manière numérique.). p>
softmax code>. P>
règle de base: supposant que vous disposez de plusieurs classes / étiquettes, chaque échantillon appartient à une classe exactement (exactement une étiquette)? P>
NO STRAND>, l'objet peut appartenir à plusieurs classes simultanément: Multilabel. Utilisez SIGMOID pour l'activation et l'entropie transversale binaire pour la perte. P>
Dans la description, je ne suis pas certain de ce qui est le cas dans votre scénario. p>
Si chaque entrée peut appartenir à plusieurs étiquettes / classe, vous devez utiliser tf.nn.sigmoid_cross_tropy_with_logits code>. Si vous utilisez
sigmoid code> sur la sortie du modèle, vous obtiendrez
3 code> probabilités pour
3 code> étiquettes. Vous pouvez lire plus de détails ici . p>