| ВведениеНаука - это НЕ битва, это сотрудничество. Мы все строим идеи друг друга. Наука - это акт любви, а не войны. Любовь к красоте в мире, который нас окружает, и любовь к тому, чтобы делиться и создавать что-то вместе. Это делает науку Эмоционально говоря, очень увлекательное занятие!- Йошуа Бенжио
Волна искусственного интеллекта захлестывает мир, и многие слова всегда звучат у нас в ушах, такие как искусственный интеллект, машинное обучение, глубокое обучение и так далее. Концепция «искусственного интеллекта» была предложена еще в 1956 году. Как следует из названия, компьютеры используются для создания сложных машин с теми же основными характеристиками, что и у человеческого интеллекта. После десятилетий развития, после 2012 года, благодаря увеличению объема данных, улучшению вычислительной мощности и появлению алгоритмов машинного обучения (глубокого обучения), искусственный интеллект начал стремительно развиваться. Однако текущая научно-исследовательская работа сосредоточена на слабой части искусственного интеллекта, то есть машина обладает способностью наблюдать и воспринимать, а также может понимать и рассуждать в определенной степени Ожидается, что некоторые крупные прорывы могут быть сделаны в это поле. Большая часть искусственного интеллекта в фильме изображает сильный искусственный интеллект, то есть позволяющий машинам приобретать адаптивные способности и решать некоторые проблемы, с которыми раньше не приходилось сталкиваться, и эту часть трудно достичь в текущем реальном мире.
Если ожидается, что искусственный интеллект совершит прорыв, как он будет достигнут и откуда берется «интеллект»? Во многом это благодаря одному подходу к искусственному интеллекту — машинному обучению.
Концепция машинного обучения
Машинное обучение — способ достижения искусственного интеллекта.
По своей сути, машинное обучение использует алгоритмы для анализа данных, чтобы извлечь из них уроки, а затем принимать решения и прогнозировать события в реальном мире. В отличие от традиционных программ, которые жестко закодированы для решения конкретных задач, машинное обучение «обучается» на большом количестве данных, используя различные алгоритмы, чтобы узнать на основе данных, как выполнить задачу. Машинное обучение возникло на ранней стадии искусственного интеллекта, а традиционные алгоритмы включают в себя деревья решений, кластеризацию, байесовскую классификацию, машины опорных векторов, EM, Adaboost и многое другое. С точки зрения методов обучения алгоритмы машинного обучения можно разделить на обучение с учителем (например, задачи классификации), обучение без учителя (например, задачи кластеризации), обучение с полуучителем, обучение ансамблем, глубокое обучение и обучение с подкреплением.
Применение традиционных алгоритмов машинного обучения в областях распознавания отпечатков пальцев, обнаружения лиц на основе Хаара и обнаружения объектов на основе признаков HoG в основном достигло требований коммерциализации или уровня коммерциализации конкретных сценариев, но каждый шаг чрезвычайно сложен до появления. алгоритмов глубокого обучения.
Концепция глубокого обучения
Глубокое обучение — это метод, реализующий машинное обучение.
Это не самостоятельный метод обучения сам по себе, и методы обучения с учителем и без учителя также используются для обучения глубоких нейронных сетей. Однако из-за быстрого развития этой области в последние годы некоторые уникальные методы обучения были предложены один за другим (например, остаточная сеть), поэтому все больше и больше людей рассматривают его как метод обучения.
Первоначальное глубокое обучение — это процесс обучения, в котором используются глубокие нейронные сети для решения представления признаков. Сама по себе глубокая нейронная сеть не является новой концепцией, ее можно примерно понимать как структуру нейронной сети, содержащую несколько скрытых слоев. Чтобы улучшить обучающий эффект глубокой нейронной сети, люди вносят соответствующие коррективы в способ подключения и функцию активации нейронов. На самом деле, есть много идей, которые были предложены в первые годы, но из-за недостаточного количества обучающих данных и отсталой вычислительной мощности на тот момент конечный эффект был неудовлетворительным. Глубокое обучение, как самый популярный метод машинного обучения в настоящее время, не означает, что это конец машинного обучения. По крайней мере существуют следующие проблемы:
1. Модель глубокого обучения требует много обучающих данных, чтобы показать волшебный эффект, но в реальной жизни часто возникают проблемы с небольшими выборками.В настоящее время метод глубокого обучения нельзя использовать, а традиционный метод машинного обучения может справиться с этим;
2. В некоторых областях можно хорошо использовать традиционные и простые методы машинного обучения, и нет необходимости использовать сложные методы глубокого обучения;
3. Идея глубокого обучения исходит от человеческого мозга, но это ни в коем случае не симуляция человеческого мозга.
Следовательно, существует также разница между фреймворками машинного обучения и фреймворками глубокого обучения. По сути, среда машинного обучения охватывает различные методы обучения для классификации, регрессии, кластеризации, обнаружения аномалий и подготовки данных, а также может включать методы нейронных сетей. Фреймворк глубокого обучения или глубокой нейронной сети (DNN) охватывает различные топологии нейронных сетей с множеством скрытых слоев, включая многоэтапный процесс распознавания образов. Чем больше слоев в сети, тем более сложные функции можно извлечь для кластеризации и классификации. Common Caffe, CNTK, DeepLearning4j, Keras, MXNet и TensorFlow — это платформы глубокого обучения. Принимая во внимание, что Scikit-learning и Spark MLlib — это фреймворки для машинного обучения. Theano охватывает обе категории.
Остальная часть этой статьи будет посвящена трем фреймворкам caffe, tensorflow и keras для глубокого обучения.Более целесообразно использовать scikit-learning и spark MLlib, если вам нужно использовать только традиционные базовые алгоритмы машинного обучения.
3. Сравнение фреймворков глубокого обучения
Нейронная сеть обычно включает два этапа: обучение и тестирование. Обучение — это процесс использования ЦП или ГП для извлечения параметров модели из обучающих данных и моделей нейронных сетей (AlexNet, RNN и других сред обучения нейронных сетей, Caffe и т. д.). Тест состоит в том, чтобы запустить тестовые данные с обученной моделью (модель нейронной сети + параметры модели) и проверить результаты. А caffe, keras, tensorflow — это абстрагирование данных ссылок, задействованных в процессе обучения, для формирования пригодной для использования структуры.
(1) Кафе
1. Концепция
Caffe — это четкая и эффективная среда глубокого обучения, а также широко используемая среда глубокого обучения с открытым исходным кодом.До появления Tensorflow это был проект с наибольшим количеством звезд Github в области глубокого обучения. Основные преимущества: легко начать работу, структура сети определяется в виде конфигурационных файлов, и нет необходимости проектировать сеть с помощью кода. Скорость обучения высока, а компоненты являются модульными, что позволяет легко расширить их до новых моделей и учебных задач. Однако, когда Caffe был первоначально разработан, цель была только для изображений и не учитывала текст, речь или данные временных рядов.Поэтому Caffe очень хорошо поддерживает сверточные нейронные сети, но не особенно достаточно для временных рядов RNN, LSTM и т. д. В папке моделей проекта Caffe есть много часто используемых сетевых моделей, таких как Lenet, AlexNet, ZFNet, VGGNet, GoogleNet, ResNet и т. д.
2. Модульная структура Caffe
От низкого к высокому Caffe абстрагирует данные в сети в Blob, сеть каждого уровня абстрагируется в Layer, вся сеть абстрагируется в Net, а метод решения сетевой модели абстрагируется в Solver.
1. Blob представляет данные в сети, в том числе обучающие данные, параметры каждого уровня самой сети, а данные, передаваемые между сетями, реализуются Blob.В то же время данные Blob также поддерживают хранение на CPU и GPU. , который может храниться в обоих. Синхронизировать между ними.
2. Слой — это абстракция различных слоев нейронной сети, включая сверточные слои и слои понижающей дискретизации, а также полносвязные слои и различные слои функций активации. В то же время каждый уровень реализует прямое и обратное распространение и передает данные через Blob.
3.Net представляет собой представление всей сети, состоящей из различных передних и задних соединений уровня, а также построенную сетевую модель.
4. Решатель определяет метод решения для модели сети Net, записывает процесс обучения сети, сохраняет параметры модели сети, прерывает и возобновляет процесс обучения сети. Custom Solver может реализовывать различные методы решения сети.
3. Способ установки
Caffe необходимо предварительно установить больше зависимостей, CUDA, snappy, leveldb, gflags, glog, szip, lmdb, OpenCV, hdf5, BLAS, boost, ProtoBuffer и т. д.;
Официальный сайт Caffe: http://caffe.berkeleyvision.org/;
Caffe Github: https://github.com/BVLC/caffe; Руководство по установке Caffe:
http://Zhu Fu Fang Cur.Berkeleyvision.org/installation.HTML,
http://blog.CSDN.net/ назначил встречу свернуться калачиком/article/details/71375762;
Установка Caffe разделена на версии CPU и GPU.Версия GPU требует поддержки видеокарты и установки CUDA.
4. Используйте Caffe для создания нейронной сети
[Блок-схема построения нейронной сети с кофе]
В приведенном выше процессе шаг 2 является основной операцией, а также самой сложной частью использования caffe.Keras делает абстракцию более высокого уровня для этой части, позволяя пользователям быстро написать модель, которую они хотят реализовать.
(2) Тензорный поток
1. Концепция
TensorFlow — это программная библиотека с открытым исходным кодом для числовых вычислений с использованием графов потоков данных. Узлы в графе представляют собой математические операции, а ребра графа представляют собой многомерные массивы данных (тензоры), передаваемые между узлами. Гибкая архитектура позволяет развертывать вычисления на одном или нескольких процессорах или графических процессорах на серверах или мобильных устройствах с помощью единого API. Tensorflow включает в себя связанные концепции, которые объясняются следующим образом:
1) Символьный расчетСимвольные вычисления сначала определяют различные переменные, а затем устанавливают «вычислительный граф», который определяет взаимосвязь вычислений между каждой переменной. Символьные вычисления также называют диаграммой потока данных.Этот процесс показан на рисунке 2-1 ниже.Потоки данных соответствуют черной линии со стрелками на рисунке.
【2-1 Пример диаграммы потока данных】
Графы потоков данных описывают математические вычисления как ориентированные графы «узлов» и «ребер». ① «Узел» обычно используется для обозначения прикладной математической операции, но также может обозначать начальную точку ввода данных (подача)/конечную точку вывода (выталкивание) или конечную точку чтения/записи постоянной переменной. (постоянная переменная). ② «Линия» представляет отношение ввода/вывода между «узлами». ③ Многомерные массивы данных, которые передаются онлайн, называются «тензорами».
2) ТензорТензор, который можно рассматривать как естественное расширение вектора и матрицы, используется для представления широкого спектра типов данных Порядок тензора также называется размерностью. Тензор ранга 0, скаляр, является числом. Тензор ранга 1 или вектор представляет собой упорядоченный набор чисел. Тензор ранга 2 или матрица представляет собой набор векторов, расположенных упорядоченно. Тензор ранга 3, или куб, представляет собой набор матриц, расположенных одна над другой. И так далее.
3) Формат данных (data_format)В настоящее время существует два основных способа представления тензоров: ①-й режим или режим channels_first, которые используют Theano и caffe. ② Режим tf или режим channels_last, TensorFlow использует этот режим.
Пример, иллюстрирующий разницу между двумя режимами: Для 100 каналов RGB3 16×32 (высота 16, ширина 32) цветных изображений, представление th: (100,3,16,32) представление tf: (100,16, 32,3) Отличие только в том, что положение канала №3 другое.
2. Модульная структура Tensorflow
Каталог Tensorflow/core содержит код основного модуля TF. Конкретная структура показана на рисунке 2-2:
[Рисунок 2-2 Структура модуля кода тензорного потока]
3. Способ установки
1. Скачать установку naconda с официального сайта: https://www.anaconda.com/download/;
2. В консоли Anaconda Prompt введите следующие 5 шагов для установки: 1) Установите py3+ cmd: conda create -n py3.6 python=3.6 anaconda 2) Активируйте виртуальную среду cmd: активируйте py3.63) Активировать предустановленную команду TSF: conda create -n tensorflow python=3.6; активировать tensorflow; 4) Установить TSF: pip install --ignore-installed --upgrade tensorflow; pip install --ignore-installed --upgrade tensorflow-gpu; 5) Выйдите из виртуальной среды cmd: деактивируйте py3.6.
4. Используйте Tensorflow для построения нейронной сети
Использование Tensorflow для построения нейронной сети в основном включает следующие 6 шагов: 1) Определить функцию добавления нейронных слоев; 2) Подготовить данные для обучения; 3) Определить узлы для получения данных; 4) Определить нейронные слои: скрытый слой и слой предсказания. 5) Определите выражение потерь 6) Выберите оптимизатор для минимизации потерь 7) Инициализируйте все переменные и обучайтесь итеративно с помощью оптимизатора sess.run.
5. Пример кода
Tensorflow строит нейронную сеть для распознавания рукописных цифр Конкретный код выглядит следующим образом:
import tensorflow as tfimport numpy as np
# 添加层def add_layer(inputs, in_size, out_size, activation_function=None):
# add one more layer and return the output of this layer
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
Wx_plus_b = tf.matmul(inputs, Weights) + biases if activation_function is None:
outputs = Wx_plus_b else:
outputs = activation_function(Wx_plus_b) return outputs
# 1.训练的数据
# Make up some real data
x_data = np.linspace(-1,1,300)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape)
y_data = np.square(x_data) - 0.5 + noise
# 2.定义节点准备接收数据
# define placeholder for inputs to network
xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1])
# 3.定义神经层:隐藏层和预测层
# add hidden layer 输入值是 xs,在隐藏层有 10 个神经元
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
# add output layer 输入值是隐藏层 l1,在预测层输出 1 个结果
prediction = add_layer(l1, 10, 1, activation_function=None)
# 4.定义 loss 表达式
# the error between prediciton and real data
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
reduction_indices=[1]))
# 5.选择 optimizer 使 loss 达到最小
# 这一行定义了用什么方式去减少 loss,学习率是 0.1 train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
# important step 对所有变量进行初始化
init = tf.initialize_all_variables()
sess = tf.Session()
# 上面定义的都没有运算,直到 sess.run 才会开始运算
sess.run(init)
# 迭代 1000 次学习,sess.run optimizerfor i in range(1000):
# training train_step 和 loss 都是由 placeholder 定义的运算,所以这里要用 feed 传入参数
sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
if i % 50 == 0:
# to see the step improvement print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))
скопировать код
(3) Керас
1. Концепция
Keras написан на чистом Python и основан на бэкэндах Tensorflow, Theano и CNTK, которые эквивалентны интерфейсам верхнего уровня Tensorflow, Theano и CNTK.Это известно как 10 строк кода для создания нейронной сети.Это легко в эксплуатации, прост в использовании, богат документацией и прост в настройке среды, а также другие преимущества, упрощающие написание кода построения нейронной сети. В настоящее время инкапсулированы такие алгоритмы, как полносвязная сеть, сверточная нейронная сеть, RNN и LSTM.
Keras имеет два типа моделей: последовательные и функциональные.Более широко используются функциональные модели, а последовательные модели являются частным случаем функциональных моделей.
1) Последовательная модель (Sequential): один вход и один выход, одна дорога ведет в конец, между слоями существует только смежная связь, межуровневая связь отсутствует. Эта модель быстро компилируется и относительно проста в эксплуатации.
2) Функциональная модель (модель): несколько входов и несколько выходов с произвольными связями между слоями. Эта модель медленно компилируется.
2. Структура модуля Keras
Keras в основном состоит из пяти модулей, отношения между модулями и функции каждого модуля показаны на рисунке 3-1:
[Рисунок 3-1 Структурная схема модуля keras]
3. Способ установки
Установка Keras состоит из следующих трех шагов: 1) Установка anaconda (python); 2) Дистрибутив Python для научных вычислений, поддерживает системы Linux, Mac, Windows, предоставляет функции управления пакетами и управления средой, которые могут быть очень удобными. сосуществование версии python, переключение и различные проблемы с установкой сторонних пакетов; 3) Используйте pip или conda для установки numpy, keras, pandas, tensorflow и других библиотек; адрес загрузки: https://www.anaconda.com/what-is- анаконда/.
4. Используйте Keras для создания нейронной сети
Используйте keras для построения нейронной сети, включая 5 шагов, а именно выбор модели, построение слоев сети, компиляцию, обучение и прогнозирование. Модули keras, используемые в работе каждого шага, показаны на рисунке 3-2:
[3-2 шага для построения нейронной сети с использованием keras]
5. Пример кода
Keras строит нейронную сеть для распознавания рукописных цифр, конкретный код выглядит следующим образом:
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
from keras.datasets import mnist
import numpy
'''
第一步:选择模型
'''
model = Sequential()
'''
第二步:构建网络层
'''
model.add(Dense(500,input_shape=(784,))) # 输入层,28*28=784
model.add(Activation('tanh')) # 激活函数是tanh
model.add(Dropout(0.5)) # 采用50%的dropout
model.add(Dense(500)) # 隐藏层节点500个
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(10)) # 输出结果是10个类别,所以维度是10
model.add(Activation('softmax')) # 最后一层用softmax作为激活函数
'''
第三步:编译
'''
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) # 优化函数,设定学习率(lr)等参数
model.compile(loss='categorical_crossentropy', optimizer=sgd, class_mode='categorical') # 使用交叉熵作为loss函数
'''
第四步:训练
.fit的一些参数
batch_size:对总的样本数进行分组,每组包含的样本数量
epochs :训练次数
shuffle:是否把数据随机打乱之后再进行训练
validation_split:拿出百分之多少用来做交叉验证
verbose:屏显模式 0:不输出 1:输出进度 2:输出每次的训练结果
'''
(X_train, y_train), (X_test, y_test) = mnist.load_data() # 使用Keras自带的mnist工具读取数据(第一次需要联网)
# 由于mist的输入数据维度是(num, 28, 28),这里需要把后面的维度直接拼起来变成784维
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1] * X_train.shape[2])
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1] * X_test.shape[2])
Y_train = (numpy.arange(10) == y_train[:, None]).astype(int)
Y_test = (numpy.arange(10) == y_test[:, None]).astype(int)
model.fit(X_train,Y_train,batch_size=200,epochs=50,shuffle=True,verbose=0,validation_split=0.3)
model.evaluate(X_test, Y_test, batch_size=200, verbose=0)
'''
第五步:输出
'''
print("test set")
scores = model.evaluate(X_test,Y_test,batch_size=200,verbose=0)
print("")
print("The test loss is %f" % scores)
result = model.predict(X_test,batch_size=200,verbose=0)
result_max = numpy.argmax(result, axis = 1)
test_max = numpy.argmax(Y_test, axis = 1)
result_bool = numpy.equal(result_max, test_max)
true_num = numpy.sum(result_bool)
print("")
print("The accuracy of the model is %f" % (true_num/len(result_bool)))
скопировать код
(4) Сравнение преимуществ и недостатков фреймворка
Контрастное измерение | Caffe | Tensorflow | Keras |
---|---|---|---|
Трудно начать | 1. Не нужно писать код, просто определите структуру сети в файле .prototxt, чтобы завершить обучение модели. 2. Установка сложна, а дизайн сетевой структуры внутри файла .prototxt относительно ограничен, проектировать сетевую структуру на Python не удобно и бесплатно. 3. Файл конфигурации не может настроить гиперпараметры программно и не может легко поддерживать такие операции, как перекрестная проверка и поиск по сетке гиперпараметров. | 1. Прост в установке, богат учебными ресурсами и позволяет быстро построить базовую модель по образцу. 2. Есть определенные пороги для использования. Парадигмы программирования и математическая статистика затрудняют начало работы для пользователей, не имеющих опыта машинного обучения или науки о данных. 3. Из-за своей гибкости это относительно низкоуровневый фреймворк, при его использовании нужно писать много кода и изобретать велосипед. | 1. Установка проста, предназначена для того, чтобы пользователи могли проводить самые быстрые эксперименты с прототипами, а процесс превращения идей в результаты является самым коротким, что очень подходит для передовых исследований. 2. API прост в использовании.Пользователям нужно только собрать расширенные модули для разработки нейронной сети, что снижает накладные расходы на понимание при программировании и чтении чужого кода. |
Обслуживание фреймворка | Проект GitHub, поддерживаемый Berkeley Vision and Learning Center (BVLC). | Он определен как самый популярный и признанный фреймворк глубокого обучения с открытым исходным кодом, с отличной структурой фреймворка, высококачественным кодом на уровне продукта, разработанным и поддерживаемым командой Google, и благословением возможностей. | Все еще разрабатываемый и поддерживаемый командой Google, API упакован в TensorFlow как tf.keras, Microsoft поддерживает свой бэкенд CNTK, Amazon AWS также разрабатывает поддержку MXNet. Другие поддерживаемые компании включают NVIDIA, Uber, Apple (через CoreML). |
Поддерживаемые языки | C++/Cuda | Python C++ (Go, Java, Lua, Javascript или R) | Python |
Алгоритм упаковки | 1. Поддержка сверточной нейронной сети CNN очень хорошая, имеет большое количество обученных классических моделей (AlexNet, VGG, Inception) и ультрасовременных (ResNet и др.) и других моделей, которые собираются в модельном зоопарке. 2. Поддержка временных рядов RNN, LSTM и т. д. не особенно достаточна. | 1. Он поддерживает CNN и RNN, а также глубокое обучение с подкреплением и другие ресурсоемкие научные вычисления (такие как решение уравнения в частных производных и т. д.). 2. Вычислительный граф должен быть построен как статический граф, что затрудняет реализацию многих вычислений, особенно поиска луча, который часто используется при прогнозировании последовательности. | 1. Поддерживает CNN и рекуррентные сети, поддерживает каскадные модели или модели с произвольной структурой графа и переключается с вычислений ЦП на ускорение ГП без каких-либо изменений кода. 2. Без набора инструментов для обучения с подкреплением очень сложно модифицировать реализацию самостоятельно. Инкапсуляция слишком сложна, детали обучения не могут быть изменены, а детали штрафов трудно изменить. |
Развертывание модели | 1. Программа работает стабильно, а качество кода высокое. Она подходит для производственных сред со строгими требованиями к стабильности. Это первая массовая среда глубокого обучения промышленного уровня. 2. Нижний уровень Caffe основан на C++, который может быть скомпилирован в различных аппаратных средах и имеет хорошую переносимость.Он поддерживает Linux, Mac и Windows, а также может быть скомпилирован и развернут на системах мобильных устройств, таких как Android и iOS. | 1. Хорошая производительность, возможность одновременного запуска нескольких крупномасштабных моделей глубокого обучения, поддержка управления жизненным циклом модели, эксперименты с алгоритмами и эффективное использование ресурсов графического процессора, что позволяет быстрее внедрять обученные модели в реальную производственную среду. и легко. 2. Гибкая переносимость, один и тот же код можно легко развернуть на ПК, серверах или мобильных устройствах с любым количеством процессоров или графических процессоров практически без модификации. | 1. Простота развертывания, использование TensorFlow, CNTK и Theano в качестве серверной части упрощает сложность программирования и экономит время на опробование новых сетевых структур. 2. Чем сложнее модель, тем больше выгода, особенно в моделях, которые сильно зависят от распределения веса, комбинации нескольких моделей и многозадачного обучения. |
представление | В настоящее время поддерживается только обучение с несколькими графическими процессорами на одной машине, а распределенное обучение не поддерживается. | Поддерживайте распределенные вычисления, делайте GPU или TPU (Tensor Processing Unit) кластерными параллельными вычислениями и совместно обучайте модель. Связь между различными устройствами плохо оптимизирована, а распределенная производительность не оптимизирована. | Несколько графических процессоров нельзя использовать напрямую, а скорость обработки крупномасштабных данных не такая высокая, как у других фреймворков, поддерживающих несколько графических процессоров и распределение. Использование бэкэнда TensorFlow намного медленнее, чем чистый TensorFlow. |
Справочная статья
[1].https://www.zhihu.com/question/57770020/answer/249708509 В чем разница между искусственным интеллектом, машинным обучением и глубоким обучением?
[2].http://km.oa.com/group/25254/articles/show/325228?kmref=search&from_page=1&no=1 От входа до поедания курицы - на основе Caffe framework AI автоматизация распознавания изображений
[3].http://blog.luoyetx.com/2015/10/reading-caffe-1/
[4]. https://zhuanlan.zhihu.com/p/24087905 Caffe Introduction and Practice-Introduction
[5]. https://keras-cn.readthedocs.io/en/latest/for_beginners/FAQ/официальный сайт keras.
[6].http://biog.csdn.net/sinat_26917383
[7].http://www.cnblogs.com/lc1217/p/7132364.html Глубокое обучение: основы начала работы с Keras (1)
[8]. https://www.jianshu.com/p/e112012a4b2d Yiwen будет использовать Tensorflow для построения нейронных сетей.
[9]. https://www.zhihu.com/question/42061396/answer/93827994 Устранит ли глубокое обучение все другие алгоритмы машинного обучения?
[10].https://www.leiphone.com/news/201702/T5e31Y2ZpeG1ZtaN.html Сравнение TensorFlow и Caffe, MXNet, Keras и других сред глубокого обучения.
[11].https://chenrudan.github.io/blog/2015/11/18/comparethreeopenlib.html Сравнение трех библиотек с открытым исходным кодом Caffe, TensorFlow, MXnet.
[12].https://zhuanlan.zhihu.com/p/24687814 Сравнение десяти лучших фреймворков для глубокого обучения: TensorFlow — самый популярный, но не лучший
[13] https://www.leiphone.com/news/201704/8RWdnz9dQ0tyoexF.html Вначале все сложно! Приступая к работе с TensorFlow, эти 9 вопросов должны решить TF Boys
Если вы считаете, что наш контент неплох, перешлите его в круг друзей и поделитесь им с друзьями~