TensorFlow és el marc principal de Google per a l'aprenentatge automàtic, i cada nova versió aporta una àmplia gamma de capacitats i funcions. Després d'haver ascendit per la corba d'aprenentatge, podeu escriure aplicacions d'aprenentatge automàtic sofisticades i executar-les a gran velocitat.
Però augmentar la corba d'aprenentatge no és fàcil: amb un gran poder comporta una gran complexitat. Per ajudar-vos en la vostra escalada, heu de conèixer els tipus de dades de TensorFlow, la utilitat TensorBoard i el desplegament d'aplicacions al motor d'aprenentatge automàtic de Google.
Tipus de dades fonamentals a TensorFlow
Podeu escriure aplicacions TensorFlow en diversos idiomes, com ara Python, C++ i Java. Però independentment de l'idioma que utilitzeu, heu d'estar familiaritzat amb una sèrie de tipus de dades específics de TensorFlow:
- Tensors i marcadors de posició: un tensor és una instància de la classe Tensor i serveix com a matriu multidimensional de propòsit general. Un marcador de posició també és un Tensor, però en lloc d'inicialitzar-se en codi, rep dades d'una sessió que seran vàlides durant una execució de la sessió. Els marcadors de posició permeten actualitzar el contingut d'un tensor d'una execució de sessió a una altra.
- Gràfics: Un gràfic és un contenidor semblant a una llista o una tupla. Només un gràfic pot estar actiu alhora, i quan codifiqueu una operació que accepta tensors o variables, els tensors, les variables i l'operació s'emmagatzemen com a elements al gràfic. Quan creeu un optimitzador i crideu al seu mètode de minimització, TensorFlow emmagatzema l'operació resultant al gràfic.
- Sessions . Els gràfics emmagatzemen operacions, però no poden realitzar-les per si mateixos. En lloc d'això, heu de crear una sessió i trucar al seu mètode d'execució. Si truqueu a run amb un tensor o una operació, el mètode executarà les operacions del gràfic necessàries per obtenir el resultat desitjat.
- Optimitzadors . L'objectiu de l'aprenentatge automàtic és perfeccionar un model matemàtic d'un sistema del món real fins que s'assembla el més possible al sistema. Aquest procés de perfeccionament s'anomena optimització i els investigadors han ideat molts mètodes d'optimització. TensorFlow admet molts d'aquests algorismes i proporciona una classe d'optimització per a cadascun. Independentment de la classe, podeu obtenir una operació d'optimització cridant al mètode de minimització de l'optimitzador.
- Variables . A diferència dels tensors i els marcadors de posició, una variable és una instància de la classe Variable. La seva finalitat principal és contenir dades per actualitzar durant el procés d'optimització. Per exemple, si la vostra aplicació modela un sistema amb una línia recta, emmagatzemareu el pendent de la línia i la intersecció y com a variables. Però abans de poder utilitzar variables per optimitzar un model, cal crear i executar operacions especials d'inicialització.
- Estimadors . Si preferiu no tractar amb estructures de dades de baix nivell, com ara sessions i gràfics, podeu executar algorismes d'aprenentatge automàtic mitjançant l'API Estimator de TensorFlow. Un estimador és una instància de la classe Estimator, i cada estimador incorpora un algorisme d'aprenentatge automàtic. El principal avantatge d'utilitzar estimadors és que tots tenen els mateixos tres mètodes per iniciar el procés d'aprenentatge automàtic: entrenar, avaluar i predir.
Com utilitzar TensorBoard a TensorFlow
Quan instal·leu TensorFlow, l'instal·lador també proporciona una utilitat de línia d'ordres anomenada TensorBoard. Això genera gràfics que us permeten visualitzar el funcionament de la vostra aplicació TensorFlow. TensorBoard facilita la cerca d'errors als vostres programes, però no és fàcil d'utilitzar. Per generar dades i visualitzar els diagrames a TensorFlow, heu de realitzar sis passos:
Crear operacions de resum.
Abans de poder veure les dades a TensorBoard, heu d'identificar les dades que es mostraran creant operacions especials anomenades operacions de resum. Podeu crear aquestes operacions cridant a funcions del paquet tf.summary. Per exemple, podeu crear una operació de resum per a un sol valor cridant a tf.summary.scalar. Podeu crear una operació de resum per a una sèrie de valors cridant a tf.summary.histogram. Podeu combinar operacions juntes cridant a una funció com tf.summary.merge_all.
Executar operacions de resum.
Després de crear una o més operacions de resum, podeu obtenir les dades de resum executant les operacions en una sessió. Com a resultat, la sessió retornarà un buffer de protocol que conté les dades de resum de l'aplicació.
Creeu un FileWriter.
Abans de poder imprimir les dades de resum en un fitxer, heu de crear un FileWriter trucant a tf.summary.FileWriter. Aquest constructor accepta molts arguments, però l'únic argument necessari és el nom del directori per contenir les dades de resum.
Imprimeix les dades del resum.
La classe FileWriter no té un mètode d'impressió senzill. En lloc d'això, heu de cridar al mètode add_summary del FileWriter per imprimir dades de resum en un fitxer. Aquest mètode escriu el fitxer d'esdeveniments al directori especificat al constructor FileWriter. Després d'imprimir les dades, és una bona idea cridar el mètode de tancament del FileWriter per destruir la instància.
Inicieu TensorBoard.
Després d'instal·lar TensorFlow, la utilitat tensorboard apareix al directori de scripts de nivell superior. Podeu iniciar la utilitat executant l'ordre tensorboard i establint l'opció logdir al nom del directori que conté les dades de resum. Per exemple, si les dades de resum es troben al directori de sortida, podeu llançar TensorBoard executant tensorboard –logdir=output en una línia d'ordres.
Veure TensorBoard en un navegador.
Després d'iniciar la utilitat TensorBoard, podeu veure la seva interfície obrint un navegador. L'URL predeterminat és http://localhost:6006, però podeu configurar-ho configurant les opcions d'amfitrió i port a l'ordre de tensorboard.
Com executar TensorFlow al núvol
La millor raó per utilitzar TensorFlow per a l'aprenentatge automàtic és que podeu executar les vostres aplicacions al núvol. Més concretament, podeu implementar programes TensorFlow al motor d'aprenentatge automàtic (ML), que Google posa a disposició com a part de Google Cloud Platform (GCP). Aquest procés de desplegament consta de set passos:
Creeu un projecte de Google Cloud Platform.
Quan treballeu amb el GCP, un projecte serveix com a contenidor central de paràmetres de configuració i fitxers font. Podeu crear un projecte nou visitant la plataforma de Google Cloud , fent clic a Selecciona un projecte i fent clic al botó més al quadre de diàleg Selecciona. Podeu triar el nom del vostre projecte, però el GCP estableix l'identificador del projecte, que és únic entre tots els projectes de GCP.
Activa l'accés al motor ML.
Cada projecte GCP nou pot accedir a una sèrie de capacitats de Google, com ara la botiga de dades i l'emmagatzematge al núvol. Però de manera predeterminada, els projectes GCP no poden desplegar aplicacions al motor ML. Per habilitar l'accés, obriu el menú a la part superior esquerra de la pàgina del projecte, seleccioneu API i serveis i, a continuació, feu clic a Biblioteca. Feu clic a l'enllaç titulat Google Cloud Machine Learning Engine i, a continuació, feu clic al botó ACTIVA.
Instal·leu el kit de desenvolupament de programari al núvol (SDK).
Podeu accedir a GCP des d'una línia d'ordres instal·lant l'SDK de Google Cloud . Per descarregar-ho, feu clic a l'enllaç adequat per al vostre sistema operatiu. Quan s'hagi completat la instal·lació, podreu accedir a l'SDK executant les ordres de gcloud en una línia d'ordres.
Carregueu dades d'entrenament/predicció a Cloud Storage.
El motor ML només pot accedir a les vostres dades d'entrenament/predicció si les pengeu al Cloud Storage de Google. Podeu interactuar amb Cloud Storage des d'una línia d'ordres mitjançant la utilitat gsutil proporcionada pel Cloud SDK. Les dades d'emmagatzematge al núvol es troben en estructures semblants a un directori anomenades cubs i, quan pengeu un fitxer a un cub, l'estructura de dades s'anomena objecte.
Afegiu un mòdul setup.py al paquet de la vostra aplicació.
Per fer que una aplicació Python sigui accessible per al motor ML, cal que l'estructurau com a paquet. Cada paquet ha de tenir un mòdul setup.py al directori de nivell superior. Aquest mòdul ha de proporcionar codi per a setuptools.setup, que proporciona informació de configuració a ML Engine.
Llançar un treball de formació per a ML Engine.
Per entrenar el vostre model al núvol, heu d'iniciar un treball de formació executant gcloud ml-engine jobs submit training amb les opcions adequades. Les opcions inclouen --package-path, que identifica la ubicació del paquet, --module-name, que proporciona el nom del mòdul Python, i –job-dir, que indica al ML Engine on emmagatzemar la sortida. Quan s'hagi completat l'entrenament, ML Engine produirà un SavedModel que conté els resultats entrenats.
Inicieu una tasca de predicció per a ML Engine.
Després d'obtenir un SavedModel, podeu utilitzar el motor ML per fer prediccions executant gcloud ml-engine jobs submit prediction amb les opcions adequades. Les opcions inclouen --input-paths, que identifica la ubicació dels fitxers d'entrada del projecte, --data-format, que indica a ML Engine com es formaten les dades d'entrada i --output-path, que identifica on hauria de sortir la predicció. ser emmagatzemat.