[PYTHON] Créer un modèle à sorties multiples pour l’analyse de régression [Débutant]

Ce que je veux essayer avec l'apprentissage automatique, c'est de créer une IA qui donne plusieurs réponses. J'ai réussi à le déplacer comme ça, alors je l'ai posté sous forme de mémorandum

Environnement d'essai

Logiciel version
Google Colaboratory 2020-10-01

Code d'implémentation

modèle

def build_model():
  inputs = layers.Input(shape=(len(train_dataset.keys()),))
  x = layers.Dense(64, activation='relu')(inputs)

  a = layers.Dense(64, activation='relu')(x)
  output_a = layers.Dense(1, name='bmi')(a)

  b = layers.Dense(64, activation='relu')(x)
  output_b = layers.Dense(1, name='life_expectancy')(b)

  model = keras.Model(inputs=inputs, outputs=[output_a, output_b], name='Health')

  model.compile(
      optimizer=tf.keras.optimizers.RMSprop(0.001),
      loss_weights=[1., 0.8],
      loss=['mse', 'mse'],
      metrics=['mae', 'mse'])

  return model

Soudain, le code que j'ai réellement essayé est au-dessus Il semble que keras.Sequential, qui est souvent utilisé dans l'exemple de code, n'a qu'une seule sortie. Si vous voulez demander plusieurs choses à la fois, il semble que vous deviez définir Model avec une API fonctionnelle Par exemple, prédire le nombre de «retweets» et de «j'aime» à partir du contenu du tweet.

Il semble que vous puissiez augmenter la sortie autant que vous le souhaitez en stockant le résultat de sortie de la couche à ajouter dans une variable et en le passant sous forme de tableau à l'argument ʻoutputs de Keras.Model`.

De plus, en spécifiant la fonction de perte dans le tableau pour «loss», il semble que la méthode d'évaluation puisse être modifiée pour chaque sortie.

Données des enseignants

height weight bmi sex birthday life_expectancy
161 121 47 female 1982-02-01 40
154 55 23 female 2005-08-09 72
172 64 22 male 1976-09-21 37

J'ai créé des données fictives qui relient la taille, le poids, l'IMC et l'espérance de vie Créez un modèle qui prédit l'IMC et l'espérance de vie à partir de la taille, du poids, du sexe et de l'année de naissance

Entraînement

model.fit(train_data, [train_label_a, train_label_b], epochs=100)

Lors de la formation, transmettez les données et les données de l'enseignant à fit sous forme de tableau Il semble que si vous le passez au format dictionnaire, le retour de l'erreur ne se passe pas bien et vous ne pouvez pas apprendre Un système d'analyse d'image commun gère bien les données d'image volumineuses avec tf.data.Dataset, mais cela semble également être un type de dictionnaire, donc l'entraînement a échoué avec plusieurs modèles de sortie. De plus, lors du passage avec tf.data.Dataset, il est passé avec l'ensemble de données et d'étiquettes, donc c'est encore plus chimpunkampun orz

Post-scriptum: Lors de la transmission de données avec tf.data.Dataset, j'ai pu donner des commentaires en faisant correspondre la clé du dictionnaire avec le nom de sortie du modèle.

ds = tf.data.Dataset.from_tensor_slices((normed_train_data, {"bmi": train_labels.bmi, "life_expectancy": train_labels.life_expectancy}))
ds = ds.batch(BATCH_SIZE)

model.fit(ds, epochs=100)

prime

C'est tout le code que j'ai vérifié en écrivant et en déplaçant Publié sur Colaboratory

Renvoyer l'IMC et l'espérance de vie de prévision des problèmes

à la fin

J'ai essayé d'écrire sur l'apprentissage automatique, mais je suis dans le brouillard de Gori sans le savoir du tout. Par conséquent, pardonnez-moi si la fin de l'article est juste "~ semble".

La précision de l'apprentissage automatique lui-même dépasse l'imagination, et s'il n'y a pas de biais dans les données d'entraînement, il semble que même une petite quantité de données donnera une précision de prédiction considérable. Des choses et des modèles exceptionnels qui ne sont pas bénis avec des données d'apprentissage donneront d'étranges valeurs numériques, alors combien pouvons-nous emballer ces choses ... Je me demande si ce sera la différence avec Bonjin. J'ai senti ça

référence

Premiers pas avec Keras avec une API fonctionnelle

Recommended Posts

Créer un modèle à sorties multiples pour l’analyse de régression [Débutant]
Analyse de régression multiple avec Keras
Algorithme d'apprentissage automatique (analyse de régression multiple)
Analyse de données pour améliorer POG 3 ~ Analyse de régression ~
Débutant de sortie
[scikit-learn, matplotlib] Analyse de régression multiple et dessin 3D
Analyse de régression de Poisson
Méthode d'analyse de régression
2. Analyse multivariée décrite dans Python 2-1. Analyse de régression multiple (scikit-learn)