高级和低级库之间的区别

问题描述 投票:1回答:3

高级库和低级库有什么区别?

我知道keras是一个高级库,tensorflow是一个低级库,但我对这些框架还不够熟悉,无法理解这对高库和低库的意义。

tensorflow keras libraries low-level
3个回答
1
投票

Keras是一个高级深度学习(DL)'API'。 API的关键组件是:

  • 模型 - 定义神经网络(NN)。
  • 层 - NN模型的构建块(例如Dense,Convolution)。
  • 优化器 - 用于进行梯度下降以学习NN权重的不同方法(例如SGD,Adam)。
  • 损失 - 优化程序应针对分类,回归(例如,categorical_crossentropy,MSE)等用例最小化的目标函数。

此外,它为API提供合理的默认值,例如学习优化器的速率,适用于常见用例。这减少了在学习阶段期间用户的认知负担。

这里的“指导原则”部分内容非常丰富:

https://keras.io/

运行神经网络本身所涉及的数学运算,如卷积,矩阵乘法等,都被委托给后端。 Keras支持的后端之一是Tensorflow。

要突出显示与代码段的差异:

# 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

它不再是代码片段:)因为您需要定义从变量开始的所有内容,这些变量将存储权重,层之间的连接,训练循环,创建批量数据以进行培训等。

您可以参考以下链接,通过在Keras和Tensorflow中训练MNIST(DL Hello世界示例)来了解代码复杂性。

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作为Tensorflow 2.0中的高级API。

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


1
投票

高水平意味着您的互动更接近于写英语,您编写的代码对人类来说基本上更容易理解。

低级别的一个例子是你必须做的事情,比如分配内存,将数据从一个内存地址复制到另一个内存地址。

Keras被认为是高级别的,因为您可以在几行代码中创建一个神经网络,该库将为您处理所有复杂性。

在tensorflow(我还没有使用它)中,您可能需要编写更多代码行来实现相同的功能,但可能具有更高程度的控制。读取NN的张量流代码对于外行人而言不如读取NN的keras代码有意义。


1
投票

Keras位于Tensorflow之上,因此该框架相对于Tensorflow本身而言相对“更高级”。

“高级”语言或框架通常被定义为相对于较低级语言或框架具有更多依赖性或与核心二进制代码具有更大距离的语言或框架。

例如,jQuery被认为比JavaScript更高级,因为它依赖于Javascript。而Javascript将被视为高于汇编代码,因为它被转换为汇编。

© www.soinside.com 2019 - 2024. All rights reserved.