Aidemy 2020/10/
Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le troisième article sur la gestion des données. Ravi de vous rencontrer.
Veuillez noter que ce chapitre est ésotérique et que je ne le comprends pas entièrement.
Cet article est un résumé de ce que vous avez appris dans "Aidemy" "dans vos propres mots". Il peut contenir des erreurs et des malentendus. Notez s'il vous plaît.
Quoi apprendre cette fois ・ À propos des tampons de protocole ・ À propos de hdf5 ・ À propos de TF Record
Les tampons de protocole sont utilisés par Google pour stocker des données et échanger toutes sortes d'informations structurées. (Citation: tampons de protocole wikipedia "https://ja.wikipedia.org/wiki/Protocol_Buffers")
-En tant que méthode de traitement des données, Message Type est défini à l'avance. -Le type de message est comme une classe et est défini dans le langage proto2.
・ Voyons d'abord comment l'écrire en référence au code source du type de message qui résume la structure de la famille.
・ Code![Capture d'écran 2020-10-28 22.39.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/c16c44d0-1883-12cd- a3b4-81fd090d4650.png)
-Déclarer l'utilisation de proto2 avec __ "syntax =" proto2 ";" . Assurez-vous d'ajouter ";" à la fin de la ligne. - "Message Person {}" __ représente une classe appelée "Person". -Les commentaires peuvent être représentés par __ "//" __ sur une ligne et __ "/ * * /" __ sur plusieurs lignes. -Pour "requis string name = 1;", __ "string name" __ indique que "name" est de type str. Ces deux mots sont appelés collectivement field. La partie __ "= 1" __ s'appelle la balise __ __ et a pour rôle de distinguer les données lors de la sortie des données. __ "requis" __ doit être joint aux "éléments requis". -De même, si "required int32 age = 2;", cela signifie que "age" est de type int et que la balise vaut 2.
"Enum Relationship {}" définit récemment des "types" tels que str et int. Ici, il est appelé "Type de relation". -Dans enum, il est nécessaire d'ajouter une nouvelle balise à chaque valeur (MOTHER, etc.). Les balises enum commencent par "0".
"Relation de relation obligatoire = 4;" est identique à "nom de chaîne", ce qui signifie que "relation" est un type de relation et que la balise est 4.
"Message Family {}" est identique à Person et représente la classe Family. -__ "Répété" __ de "Personne répétée personne = 1;" est comme une "liste", auquel cas les données de type Personne sont répertoriées.
-Le fichier dans lequel le code ci-dessus est écrit s'appelle "family.proto". Pour rendre ce fichier utilisable avec python, utilisez une commande __protoc --python_out = enregistrer le chemin du fichier de destination Nom du fichier Type de message __ Entrer.
-En lisant le fichier Type de Message en python, vous pouvez utiliser le type qui y est défini (Type de famille dans family.proto, etc.). Utilisez ceci pour entrer réellement des données dans python.
・ Code![Capture d'écran 2020-10-28 22.40.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/9b0bb720-d9c4-5b63- b475-8c496b12dd63.png)
・ Résultat (seulement une partie)![Screenshot 2020-10-28 22.41.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/b2c53d35 -0695-7324-2d0f-fc31d5fe81b7.png)
-Hdf5 est un format de données utilisé par keras, par exemple, lors de l'enregistrement d'un modèle d'apprentissage créé par keras. -Dans hdf5, la structure __hierarchique peut être complétée dans un seul fichier. __ En d'autres termes, même si plusieurs dossiers (répertoires) sont créés de manière hiérarchique, le côté hdf5 peut créer des fichiers de manière complète.
-Utilisez une bibliothèque appelée h5py et Pandas pour la créer. ・ Dans ce qui suit, un fichier hdf5 sera créé en utilisant la population de la préfecture A comme exemple.
・ Code![Capture d'écran 2020-10-28 22.43.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/aec2bdea-e1da-2327- 6f2b-9684858f1cbb.png)
· Ouvrez le fichier hdf5: __ hdf5.File ("nom de fichier") __ -Créer un groupe (répertoire): __ fichier .create_group ("nom du groupe") __ -Ecrivez le fichier avec __flush () __ et fermez-le avec __close () __.
TFRecord est "un format binaire simple orienté enregistrement qui peut gérer des données volumineuses qui ne tiennent pas en mémoire". Quote: Comment créer et lire le format tdl recommandé par TensorFlow "TFRecord" [https://www.tdi.co.jp/miso/tensorflow-tfrecord-01#:~:text=TFRecord%E3%81%AF%E3%80%81%E3%80%8C%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E5%8F%8E%E3%81%BE%E3%82%89,%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82]
-TFRecord est un format de données utilisé dans TensorFlow, qui permet le traitement de données volumineuses comme décrit ci-dessus.
-Le flux est comme "lire une image", "définir le contenu à écrire" et "écrire". ・ Effectuez ce qui suit (le chemin du fichier est fictif)
・ Code![Capture d'écran 2020-10-28 22.45.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/259f8e5c-c321-d243- 1ae8-5ba83afb733a.png)
-A propos de la partie "Définition des données à écrire", __ "tf.train.Example ()" "tf.train.Features ()" "tf.train.Feature ()" "tf.train.ByteList ()" __ De nombreuses instances telles que sont générées hiérarchiquement, mais chacune a un rôle. -Pour "tf.train.ByteList (value = [data])", cela crée une instance avec les données dans __ [] __. Ces données doivent être de type octet, utilisez donc __tobytes () __.
-Pour la partie "write", __ "tf.python_io.TFRecordWriter ('file name')" __ est la version TFRecord de "open ('w')". -__ "fp.write (my_Example.SerializePartialToString ())" __, terminer si vous écrivez finalement.
-La liste comprend variable length générale dont la longueur peut être modifiée et fixed length qui ne peut contenir que des données fixes. -La liste de python est généralement de longueur variable, mais "tf.train.Example ()" dans la section précédente est de longueur fixe. -Lors de la génération de données de longueur variable, utilisez __ "tf.train.SequenceExample ()" __.
Cette fois, c'est fini. Merci d'avoir lu jusqu'au bout.
Recommended Posts