高级库和低级库有什么区别?
我知道keras是一个高级库,tensorflow是一个低级库,但我对这些框架还不够熟悉,无法理解这对高库和低库的意义。
Keras是一个高级深度学习(DL)'API'。 API的关键组件是:
此外,它为API提供合理的默认值,例如学习优化器的速率,适用于常见用例。这减少了在学习阶段期间用户的认知负担。
这里的“指导原则”部分内容非常丰富:
运行神经网络本身所涉及的数学运算,如卷积,矩阵乘法等,都被委托给后端。 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
考虑到Keras带来的好处,Tensorflow已将tf.keras作为Tensorflow 2.0中的高级API。
高水平意味着您的互动更接近于写英语,您编写的代码对人类来说基本上更容易理解。
低级别的一个例子是你必须做的事情,比如分配内存,将数据从一个内存地址复制到另一个内存地址。
Keras被认为是高级别的,因为您可以在几行代码中创建一个神经网络,该库将为您处理所有复杂性。
在tensorflow(我还没有使用它)中,您可能需要编写更多代码行来实现相同的功能,但可能具有更高程度的控制。读取NN的张量流代码对于外行人而言不如读取NN的keras代码有意义。
Keras位于Tensorflow之上,因此该框架相对于Tensorflow本身而言相对“更高级”。
“高级”语言或框架通常被定义为相对于较低级语言或框架具有更多依赖性或与核心二进制代码具有更大距离的语言或框架。
例如,jQuery被认为比JavaScript更高级,因为它依赖于Javascript。而Javascript将被视为高于汇编代码,因为它被转换为汇编。