Traitement des données 3 (développement) À propos du format des données

Aidemy 2020/10/

introduction

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.

Quoi apprendre cette fois ・ À propos des tampons de protocole ・ À propos de hdf5 ・ À propos de TF Record

À propos des tampons de protocole (développement)

Que sont les tampons de protocole?

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.

Définition du type de message

・ 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.

Autoriser le type de message à être géré par python

-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.

Écrire des données en Python

-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)

À propos de hdf5

Qu'est-ce que hdf5

-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.

Créer un fichier hdf5

-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 () __.

À propos de TF Record

Qu'est-ce que TF Record

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.

Exportez l'image vers un autre fichier au format TFRecord.

-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.

Liste des longueurs variables et fixes

-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

Traitement des données 3 (développement) À propos du format des données
Le traitement des données
Application Python: Traitement des données # 3: Format des données
Traitement des données multi-conditions
Le traitement des données
À propos de la gestion des erreurs Tweepy
À propos de l'environnement de développement Python
Python, à propos de la gestion des exceptions
À propos de FastAPI ~ Gestion des erreurs de point de terminaison ~
Écrire des données au format HDF
A propos de la gestion des fichiers statiques Django
À propos de la gestion des données d'Anvil-App-Server
Gérez les données au format NetCDF avec Python
Analyser les données au format CSV à l'aide de SQL
À propos des données de séries chronologiques et du surentraînement
Fusionner les données au format JSON avec Ansible
Traitement des données 2 Analyse de divers formats de données