Разница между библиотеками высокого и низкого уровня - PullRequest
1 голос
/ 02 апреля 2019

В чем разница между библиотеками высокого и низкого уровня?

Я понимаю, что keras - это библиотека высокого уровня, а тензор потока - это библиотека низкого уровня, но я до сих пор недостаточно знаком с этими средами, чтобы понять, что это значит для библиотек высокого и низкого уровня.

Ответы [ 3 ]

1 голос
/ 02 апреля 2019

Keras находится на вершине Tensorflow, и, таким образом, структура находится на более высоком уровне, чем сам Tensorflow.

Язык или структура «высокого» уровня обычно определяется как язык, который имеет большее количество зависимостей или имеет большее расстояние от основного двоичного кода по сравнению с языком или структурой более низкого уровня.

Например, jQuery будет считаться более высоким уровнем, чем JavaScript, так как это зависит от Javascript. Принимая во внимание, что Javascript будет считаться более высоким уровнем, чем ассемблерный код, так как он передается в сборку.

1 голос
/ 02 апреля 2019

Keras - это API-интерфейс для глубокого обучения (DL) высокого уровня. Ключевые компоненты API:

  • Модель - для определения нейронной сети (NN).

  • Слои - строительные блоки модели NN (например, плотность, свертка).

  • Оптимизаторы - различные методы градиентного спуска для изучения весов NN (например, SGD, Адам).

  • Потери - целевые функции, которые оптимизатор должен минимизировать для таких случаев использования, как классификация, регрессия (например, categoryorical_crossentropy, MSE).

Кроме того, он предоставляет разумные значения по умолчанию для API, например, курсы обучения для Оптимизаторов, которые будут работать для общих случаев использования. Это снижает когнитивную нагрузку на пользователя на этапе обучения.

Раздел «Руководящие принципы» здесь очень информативен:

https://keras.io/

Математические операции, связанные с запуском самих нейронных сетей, такие как свертки, умножение матриц и т. Д., Делегируются бэкэнду. Один бэкэндами, поддерживаемыми Keras, является Tensorflow.

Чтобы выделить различия с помощью фрагмента кода:

Keras

# Define Neural Network
model = Sequential()  
# Add Layers to the Network
model.add(Dense(512, activation='relu', input_shape=(784,)))
....
# Define objective function and optimizer
model.compile(loss='categorical_crossentropy',
          optimizer=Adam(),
          metrics=['accuracy'])

# Train the model for certain number of epochs by feeding train/validation data
history = model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test))

Tensorflow

Это больше не фрагмент кода :), поскольку вам нужно определить все, начиная с переменных, которые будут хранить веса, связи между слоями, цикл обучения, создание пакетов данных для обучения и т. Д.

Вы можете обратиться к ссылкам ниже, чтобы понять сложность кода, обучив MNIST (пример DL Hello world) в Keras vs Tensorflow.

https://github.com/keras-team/keras/blob/master/examples/mnist_mlp.py

https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/multilayer_perceptron.py

Учитывая преимущества, которые дает Keras, Tensorflow сделал tf.keras высокоуровневым API в Tensorflow 2.0.

https://www.tensorflow.org/tutorials/

1 голос
/ 02 апреля 2019

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

Примером низкого уровня может служить язык, на котором вам придется что-то делатьнапример, выделение памяти, копирование данных с одного адреса памяти на другой и т. д.

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

В тензорном потоке (я не использовал его) вам, вероятно, придется написать гораздо больше строк кода, чтобы добиться того же, но, вероятно, иметь большую степень контроля.Чтение кода тензорного потока для NN будет менее значимым для неспециалистов, чем чтение кода keras для NN.

...