区别btwn高低库

时间:2019-04-02 02:56:04

标签: tensorflow keras libraries low-level

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

我知道keras是一个高级库,而tensorflow是一个低级库,但是我对这些框架仍然不太熟悉,无法理解高低库的含义。

3 个答案:

答案 0 :(得分:1)

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

低级别的示例是一种语言,您必须使用该语言来执行诸如分配内存,将数据从一个内存地址复制到另一个内存地址之类的事情。

Keras被认为是高级的,因为您只需几行代码就可以构成一个神经网络,该库将为您处理所有复杂性。

在tensorflow中(我没有使用过),您可能必须编写更多的代码行才能实现相同的功能,但可能具有更大的控制度。对于外行来说,读取NN的tensorflow代码比读取NN的keras代码没有意义。

答案 1 :(得分:1)

Keras位于Tensorflow之上,因此该框架比Tensorflow本身“相对较高”。

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

例如,由于jQuery取决于Javascript,因此它被认为比JavaScript更高级。鉴于Javascript被转为汇编语言,因此它被认为比汇编代码更高级。

答案 2 :(得分:1)

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

  • 模型-定义神经网络(NN)。

  • Layers -NN模型的组成部分(例如Dense,卷积)。

  • Optimizers -用于进行梯度下降以学习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

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

您可以参考以下链接,以在Keras vs 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/