Изучите TensorFlow с нуля

TensorFlow

предисловие

Только лысая голова может стать сильнее.

Текст был включен в мой репозиторий GitHub, добро пожаловать, звезда:GitHub.com/Zhongf UC очень…

TensorFlow  logo

В последнее время я изучаю соответствующие знания о TensorFlow и получил некоторые базовые знания о TensorFlow.Теперь, когда у меня есть время на выходных, я напишу несколько заметок и запишу свой рост~

В целом, TensorFlow все еще является относительно новой технологией, поэтому заинтересованные студенты могут захотеть следить за моими заметками и учиться вместе (в любом случае, ничего страшного)~

Базовые знания: нет ни основы Python, ни основы машинного обучения, можно сказать, что TensorFlow действительно изучается с нуля.

1. Среда, необходимая для установки Tensorflow

1.1 Установите среду Python

Использовать среду:Mac

Существует много версий Python, версия Python, поставляемая с Mac,2.7, но относительно старый. теперь обычно используетсяPython3.xДа, на этот раз загружена версия3.5.6

Грубые шаги для метода, который я использовал для установки Python:

  • Установить доморощенный
  • установить пиенв
  • существует.bash_profileдобавить переменную окружения
  • Заставить переменные окружения действовать
  • Установить3.X版本python

Для получения подробной информации, пожалуйста, обратитесь к следующей ссылке (в общем, я сразу установил нужную мне версию Python в соответствии со следующим руководством, которое до сих пор очень хорошо):

Я также нашел небольшое знание при установке Python:

  • Mac обычно использует bash в качестве оболочки по умолчанию, и есть несколько переменных среды, среди которыхetc/profileдасистемный уровеньда, еще несколькоуровень пользователяпеременные среды, такие как:~/.bash_profile
  • Если модификация является переменной среды системного уровня, то естьetc/profile, когда сохранить можно только:wq!Переопределить, иначе возникнет ошибка только для чтения

(Что касается загрузки зависимостей TensorFlow и numpy, я не буду здесь говорить об этом, только две команды.)

1.2 Редактор PyCharm

Java имеетIDEAАртефакт же, у Python тоже естьPyCharm, также выпускаемый JetBrains.

Я никогда раньше не использовал PyCharm и не написал ни одной строчки кода на Python.

После установки Pycharm я воспринимаю это как должноеnew projectиспользовать его, тоnext,next,next, используемый как ИДЕЯ. Но я обнаружил проблему: я был раньшеОчевидно установленоЗависимости TensorFlow и numpy, но в среде PyCharmне опознано! существуетКомандная строкаПод окном зависимости существуют!

Позже я узнал: если вы используете PyCharm для создания нового проекта, выПостроить парсер по умолчаниюв текущем каталоге проекта. И PyCharm будет следовать «ближайшему принципу», чтобы использовать синтаксический анализатор в текущем пути проекта. А добавленные нами зависимости (TensorFlow, numpy) находятся в пути, куда мы установили Python, что приводит к зависимостям, найденным в командной строке, но не найденным в PyCharm.

Решение тоже очень простое: в PyCharmуточнитьПросто посмотрите на путь, по которому мы установили Python, и просто переключите его.

Использованная литература:

  • По поводу проблемы с тем, что pip устанавливает сторонние библиотеки, но не может быть распознан в pycharm; и анализ метода pycharm для установки сторонних библиотек

2. Испытайте TensorFlow

Хорошо, теперь мы установили среду, необходимую для TensorFlow! (Это выглядит так просто, но все равно заняло у меня много времени....)

Сначала давайте посмотрим, что может сделать этот пример: у нас есть очень большое количество изображений (набор данных), эти изображения бывают разных типов (например, одежда, обувь, штаны,Всего 10 видов), закинуть эти наборы данных в нашу нейронную сеть и сгенерироватьМодель. После того, как у нас есть модель, когда мы добавляем похожие картинки, эта модель может нам помочь.предсказыватьЭто изображение одежды, обуви или брюк.

数据集

Затем я следовал коду официального сайта и некоторое время бегал (код просто шаг за шагомскопировать и вставить) и, наконец, запустите:

# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras

# Helper libraries
import numpy as np

print(tf.__version__)

# 加载数据、区分出测试数据和训练数据
# 注意:如果已经下过,重复下载的话,可能会出现EOFError: Compressed file ended before the end-of-stream marker was reached错误

fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

# 分类的列表
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

# 查看数据的值
print(train_images.shape)  # 样本的shape(可以看出有多少条样本、维度)
print(len(train_labels))  # label的个数,有多少个样本,就应该有多少个label
print(train_labels)  # label的值,对应上面分类列表(从0到9)


# 对测试数据和训练数据进行预处理(实际上就是归一化)
train_images = train_images / 255.0
test_images = test_images / 255.0

# 设置层  (初始处理)--- 建立神经层
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])


# 损失函数、优化器、指标
model.compile(optimizer=tf.train.AdamOptimizer(),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 将训练集丢进去,训练出模型(Model)
model.fit(train_images, train_labels, epochs=5)

# 将测试数据丢到模型中,评估一下得分(准确率)
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)

# 评估完准确率以后,我们可以对测试数据进行预测
predictions = model.predict(test_images)

# 选第一个样本预测后的得出最有可能结果
print(np.argmax(predictions[0]))

# 对比结果
print(test_labels[0])

Результат запуска:

(позднее примечание: это версия TensorFlow)

1.12.0

(позднее примечание: это журнал загрузки набора данных TensorFlow)

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
32768/29515 [=================================] - 0s 3us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz

26427392/26421880 [==============================] - 12s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
8192/5148 [===============================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz

4423680/4422102 [==============================] - 2s 0us/step

(позднее примечание: форма образца)

(60000, 28, 28)

(Позднее примечание: сколько существует образцов и сколько соответствующих меток)

60000

(Позднее примечание: значение метки от 0 до 9, что указывает на девять категорий)

[9 0 0 ... 3 0 5]

(позднее примечание: начать обучение)

Epoch 1/5
2019-02-19 14:00:46.842852: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

60000/60000 [==============================] - 4s 65us/step - loss: 0.4995 - acc: 0.8246
Epoch 2/5
60000/60000 [==============================] - 4s 62us/step - loss: 0.3734 - acc: 0.8655
Epoch 3/5
60000/60000 [==============================] - 4s 63us/step - loss: 0.3346 - acc: 0.8788
Epoch 4/5
60000/60000 [==============================] - 4s 63us/step - loss: 0.3102 - acc: 0.8861
Epoch 5/5
60000/60000 [==============================] - 4s 63us/step - loss: 0.2918 - acc: 0.8916

10000/10000 [==============================] - 0s 36us/step

(Позднее примечание: прогнозируемая точность)

Test accuracy: 0.8514

(Примечание позже: выберите первый образец для прогнозирования и сравните фактические результаты)

9
9

Использованная литература:

  • Одна из заметок по исследованию Tensorflow: обучите свою первую нейронную сеть — базовая классификация

2.1 Кратко опишите шаги использования TensorFlow

  1. нагрузкаДанные: используйте API набора данных для загрузки данных и преобразования набора данных.разделен наобучающие данные и тестовые данные
  2. экзаменданные: проверитьdataSetЕсть ли проблема с данными (например, количество записей выборки, количество записей этикетки и т.д.)
  3. к даннымпредварительная обработка: запуск на тестовых данных и обучающих данныхНормализованныйОбработка, цель: уменьшить влияние, вызванное размером значения (Как правило, мы уменьшим значение до небольшого диапазона)
  4. Создайте нейронную сеть: (входной слой, скрытый слой, выходной слой)
  5. Определить функции потерь, оптимизаторы, метрики для модели
  6. Добавьте обучающие данные в нашу нейронную сеть, чтобы сгенерировать модель.
  7. Бросьте тестовые данные в нашу сгенерированную модель дляоценивать, предсказывая нашу точность

3. Введение в TensorFlow

3.1 Что такое TensorFlow

Если вы зайдете в Google для поиска по ключевому слову «TensorFlow», вы можете увидеть это предложение:

An open source machine learning framework for everyone.

Да, TensorFlow — это машинное обучениеРамка. Что касается фреймворка, я считаю, что каждый может понять его лучше; по аналогии с Java, например, наш фреймворк Spring инкапсулирует множество полезных для нас API, упрощая нашу разработку (вспомните, когда мы писали Servlet!)

В качестве основы для машинного обучения TensorFlow также инкапсулирует множество полезных для нас API.уменьшатьмашинное обучениепорог.

  • Возьмите приведенный выше пример в качестве примера, я не ожидалтак мало кодаВы можете запустить «HelloWorld» машинного обучения!

3.2 Архитектура TensorFlow

Мы можем обнаружить, что основным языком, используемым в приведенной выше демонстрации, является Python, но не думайте, что TensorFlow — это фреймворк Python. Я увидел метафору и подумал, что она хорошо написана, поэтому вставьте ее:

Связь между Python и Tensorflow можно сравнить с связью между Javascript и HTML. Javascript — это полнофункциональный язык программирования, с помощью которого можно добиться всевозможных замечательных эффектов. HTML — это структура для представления некоторого типа практической вычислительной абстракции (в данном случае контента, который может быть отображен веб-браузером). Роль Javascript на интерактивных веб-страницахСоберите объекты HTML, которые видит браузер, а затем взаимодействуйте с ним, обновляя его до нового HTML, когда это необходимо.

Давайте взглянем на диаграмму архитектуры TensorFlow (PythonТолькоTensorFlow инкапсулирован)

Python封装了TensorFlow引擎

Движок TensorFlow тоже разделен на множество модулей (здесь мы вкратце разбираемся):

TensorFlow架构

Наконец

Подводя итог этой статье:

  • Установите необходимое окружение для TensorFlow
  • Следуя официальной документации,опытДавайте посмотрим на «HelloWorld» TensorFlow (машинное обучение)
    • Согласно приведенному примеру,предполагатьКакие шаги нужно сделать при использовании TensorFlow (машинное обучение)
  • TensorFlow — это фреймворк машинного обучения (глубокого обучения), который предоставляет множествопрактичныйAPI нам удобно играть с машинным обучением (глубокое обучение).

Я верю, что многие люди здесь такие же, как я раньше,сбитый с толку. Я не знаком с API в примере, приведенном официальным лицом, и я обнаружил много связанных с машинным обучением, когда пошел проверять соответствующую информацию.срок, и не знакомы с этими терминами. Потом закручивается..


while(true){
	// 循环懵逼..
}

На самом деле вспомнитьКогда я только изучил Java, тоже такой процесс, когда с экрана видишь "HelloWorld",Высокая вероятностьОн также не знает, что делает соответствующий API (даже API не знает, что это значит). Но, потратив некоторое время на изучение, вы обнаружите, что HelloWorld действительно прост!


public static void main(String[] args) {

    System.out.println("Hello World");

}

В будущем я продолжу обновлять некоторые из моих учебных материалов по TensorFlow.Примечания, Заинтересованные друзья могут следовать за мной, чтобы учиться~

Кроме того, я уже говорил с самого начала статьи, что у меня нет соответствующей основы для Python и машинного обучения, Если есть ошибка, пожалуйста, оставьте сообщение в области комментариев, чтобы исправить ее.

Следующее превью: Что означает TensorFlow? Тензор? Поток? Познакомьтесь с некоторыми из самых основ TensorFlow и общими терминами машинного обучения.

рад вывестигалантерейные товарыНомер технологии Java: Java3y. В номере более 200 статейоригинальныйТехнические статьи, обширные видеоресурсы, красивые карты мозга — идите сюдаобрати внимание нанемного!

帅的人都关注了

Я думаю, что моя статья хорошо написана, пожалуйста, нажмитеотличный!