TensorFlow е водещата рамка на Google за машинно обучение и всяка нова версия носи широк набор от възможности и функции. След като се изкачите по кривата на обучение, можете да пишете сложни приложения за машинно обучение и да ги изпълнявате с висока скорост.
Но издигането на кривата на обучение не е лесно — с голяма сила идва и голяма сложност. За да ви помогнем в изкачването, трябва да сте наясно с типовете данни на TensorFlow, помощната програма TensorBoard и внедряването на приложения в машината за машинно обучение на Google.
Основни типове данни в TensorFlow
Можете да пишете приложения TensorFlow на няколко различни езици, като Python, C++ и Java. Но независимо кой език използвате, трябва да сте запознати с поредица от специфични за TensorFlow типове данни:
- Тензори и заместители: Тензорът е екземпляр на класа Tensor и служи като многоизмерен масив с общо предназначение. Заместителят също е тензор, но вместо да бъде инициализиран в код, той получава данни от сесия, които ще бъдат валидни по време на едно изпълнение на сесията. Заместителите дават възможност за актуализиране на съдържанието на тензор от едно изпълнение на сесия до следващо.
- Графики: Графиката е контейнер, подобен на списък или кортеж. Само една графика може да бъде активна в даден момент и когато кодирате операция, която приема тензори или променливи, тензорите, променливите и операцията се съхраняват като елементи в графиката. Когато създадете оптимизатор и извикате неговия метод за минимизиране, TensorFlow съхранява получената операция в графиката.
- Сесии . Графиките съхраняват операции, но не могат да извършват операции сами. Вместо това трябва да създадете сесия и да извикате нейния метод за изпълнение. Ако извикате run с тензор или операция, методът ще изпълни операциите в графиката, необходими за получаване на желания резултат.
- Оптимизатори . Целта на машинното обучение е да усъвършенства математически модел на система от реалния свят, докато тя наподобява системата възможно най-близо. Този процес на усъвършенстване се нарича оптимизация и изследователите са измислили много методи за оптимизация. TensorFlow поддържа много от тези алгоритми и предоставя клас на оптимизатор за всеки. Независимо от класа, можете да получите операция за оптимизация, като извикате метода minimize на оптимизатора.
- Променливи . За разлика от тензорите и заместителите, променливата е екземпляр на класа Variable. Основната му цел е да съдържа данни, които да се актуализират по време на процеса на оптимизация. Например, ако вашето приложение моделира система с права линия, вие ще съхраните наклона на линията и y- intercept като променливи. Но преди да можете да използвате променливи за оптимизиране на модел, трябва да създадете и изпълните специални операции за инициализация.
- Оценители . Ако предпочитате да не се занимавате със структури от данни от ниско ниво като сесии и графики, можете да изпълнявате алгоритми за машинно обучение, използвайки приложния програмен интерфейс (API) на TensorFlow. Оценката е екземпляр на класа Estimator и всеки оценител въплъщава алгоритъм за машинно обучение. Основното предимство на използването на оценители е, че всички те имат едни и същи три метода за стартиране на процеса на машинно обучение: обучение, оценка и прогнозиране.
Как да използвате TensorBoard в TensorFlow
Когато инсталирате TensorFlow, инсталаторът предоставя и помощна програма от командния ред, наречена TensorBoard. Това генерира графики, които ви позволяват да визуализирате работата на вашето приложение TensorFlow. TensorBoard улеснява намирането на грешки във вашите програми, но не е лесен за използване. За да генерирате данни и да видите графиките в TensorFlow, трябва да изпълните шест стъпки:
Създайте обобщени операции.
Преди да можете да преглеждате данни в TensorBoard, трябва да идентифицирате данните, които да се показват, като създадете специални операции, наречени обобщени операции. Можете да създадете тези операции, като извикате функции на пакета tf.summary. Например, можете да създадете обобщена операция за една стойност, като извикате tf.summary.scalar. Можете да създадете обобщена операция за поредица от стойности, като извикате tf.summary.histogram. Можете да комбинирате операции заедно, като извикате функция като tf.summary.merge_all.
Изпълнете обобщаващи операции.
След като създадете една или повече обобщени операции, можете да получите обобщените данни, като изпълните операциите в сесия. В резултат на това сесията ще върне буфер на протокола, съдържащ обобщените данни на приложението.
Създайте FileWriter.
Преди да можете да отпечатате обобщените данни във файл, трябва да създадете FileWriter, като извикате tf.summary.FileWriter. Този конструктор приема много аргументи, но единственият задължителен аргумент е името на директорията, която съдържа обобщените данни.
Отпечатайте обобщените данни.
Класът FileWriter няма прост метод за печат. Вместо това трябва да извикате метода add_summary на FileWriter, за да отпечатате обобщени данни във файл. Този метод записва файла на събитието в директорията, посочена в конструктора на FileWriter. След като отпечатате данните, е добра идея да извикате метода close на FileWriter, за да унищожите екземпляра.
Стартирайте TensorBoard.
След като инсталирате TensorFlow, помощната програма tensorboard се появява в директорията със скриптове от най-високо ниво. Можете да стартирате помощната програма, като изпълните командата tensorboard и зададете опцията logdir на името на директорията, съдържаща обобщените данни. Например, ако обобщените данни са в изходната директория, можете да стартирате TensorBoard, като изпълните tensorboard –logdir=output на команден ред.
Вижте TensorBoard в браузър.
След като стартирате помощната програма TensorBoard, можете да видите нейния интерфейс, като отворите браузър. URL адресът по подразбиране е http://localhost:6006, но можете да конфигурирате това, като зададете опции за хост и порт в командата tensorboard.
Как да стартирате TensorFlow в облака
Най-добрата причина да използвате TensorFlow за машинно обучение е, че можете да стартирате приложенията си в облака. По-конкретно, можете да внедрите програми TensorFlow в машината за машинно обучение (ML), която Google предоставя като част от Google Cloud Platform (GCP). Този процес на внедряване се състои от седем стъпки:
Създайте проект на Google Cloud Platform.
Когато работите с GCP, проектът служи като централен контейнер с конфигурационни настройки и изходни файлове. Можете да създадете нов проект, като посетите платформата Google Cloud , щракнете върху Изберете проект и щракнете върху бутона плюс в диалоговия прозорец Избор. Можете да изберете името на вашия проект, но GCP задава идентификатора на проекта, който е уникален сред всички проекти на GCP.
Разрешете достъпа до ML Engine.
Всеки нов GCP проект може да има достъп до редица възможности на Google, включително Datastore и Cloud Storage. Но по подразбиране проектите на GCP не могат да разгръщат приложения в ML Engine. За да разрешите достъпа, отворете менюто в горния ляв ъгъл на страницата на проекта, изберете API и услуги и след това щракнете върху Библиотека. Щракнете върху връзката, озаглавена Google Cloud Machine Learning Engine, и след това щракнете върху бутона ВКЛЮЧИ.
Инсталирайте комплекта за разработка на облачен софтуер (SDK).
Можете да получите достъп до GCP от команден ред, като инсталирате Cloud SDK на Google . За да изтеглите това, щракнете върху съответната връзка за вашата операционна система. Когато инсталацията приключи, ще можете да получите достъп до комплекта за разработване на софтуер (SDK), като изпълните gcloud команди на команден ред.
Качете данни за обучение/прогнози в Cloud Storage.
ML Engine има достъп до вашите данни за обучение/прогноза само ако ги качите в Cloud Storage на Google. Можете да взаимодействате с Cloud Storage от команден ред чрез помощната програма gsutil, предоставена от Cloud SDK. Данните от Cloud Storage се съдържат в структури, подобни на директории, наречени кофи и когато качите файл в кофа, структурата на данните се нарича обект.
Добавете модул setup.py в пакета на приложението си.
За да направите Python приложение достъпно за ML Engine, трябва да го структурирате като пакет. Всеки пакет трябва да има модул setup.py в директорията от най-високо ниво. Този модул трябва да предостави код за setuptools.setup, който предоставя информация за конфигурацията на ML Engine.
Стартирайте работа за обучение за ML Engine.
За да обучите модела си в облака, трябва да стартирате задание за обучение, като стартирате gcloud ml-engine задания за изпращане на обучение с подходящите опции. Опциите включват --package-path, който идентифицира местоположението на пакета, --module-name, който предоставя името на модула на Python и –job-dir, който казва на ML Engine къде да съхранява изхода. Когато обучението приключи, ML Engine ще произведе SavedModel, съдържащ резултатите от обучението.
Стартирайте задание за прогнозиране за ML Engine.
След като получите SavedModel, можете да използвате ML Engine за извършване на прогнозиране, като стартирате gcloud ml-engine jobs submit прогнозиране с подходящите опции. Опциите включват --input-paths, който идентифицира местоположението на входните файлове на проекта, --data-format, който казва на ML Engine как са форматирани входните данни и --output-path, който идентифицира къде трябва да се изведе прогнозният изход се съхраняват.