Keras后端

来源:互联网 发布:cadence软件仿真教程 编辑:程序博客网 时间:2024/06/06 07:21

遇到的问题

图1

安装好keras后,本打算试探性写点代码,测试其是否安装成功,突然遇到如图所示的问题。然后查了Keras中文文档,才恍然大悟。我之前刚刚只装了Theano,并没有装Tensorflow。而作为Keras的“后端引擎”,默认是Tensorflow,那我们来手动改一下吧,顺便普及一些基本知识(共同学习,共同探讨)

什么是“后端”

Keras是一个模型级的库,提供了快速构建深度学习网络的模块。Keras并不处理如张量乘法、卷积等底层操作。这些操作依赖于某种特定的、优化良好的张量操作库。Keras依赖于处理张量的库就称为“后端引擎”。Keras提供了两种后端引擎Theano/Tensorflow,并将其函数统一封装,使得用户可以以同一个接口调用不同后端引擎的函数.

  • Theano是一个开源的符号主义张量操作框架,由蒙特利尔大学LISA/MILA实验室开发
  • TensorFlow是一个符号主义的张量操作框架,由Google开发

什么是“张量”

张量 (Tensor) 是 n 维空间内,有 n*r个分量的一种量, 其中每个分量都是坐标的函数, 而在坐标变换时,这些分量也依照某些规则作线性变换。 
r 称为该张量的阶 (Rank),第零阶张量 (r = 0) 为纯量 (Scale),第一阶张量 (r = 1) 为向量 (Vector), 第二阶张量 (r = 2) 则成为矩阵 (Matrix)。 例如,对于3维空间,r=1时的张量为此向量:(x,y,x)T。
由于变换方式的不同,张量分成三类:

  • 协变张量 (Covariant Tensor,志标在下者)
  • 反变张量 (Contravariant Tensor,志标在上者)
  • 混合张量 (志标在上者和志标在下者都有者)  

张量可以表述为一个值的序列,用一个向量值的定义域和一个标量值的值域的函数表示。这些定义域中的向量是自然数的向量,而这些数字称为指标。例如,3阶张量可以有尺寸2、5和7。这里,向量的范围是从<1,1,1,>到<2,5,7>。张量可以在<1,1,1>有一个值,在<1,1,2>有另一个值,等等一共70个值。 (类似的,向量可以表示为一个值的序列,用一个标量值的定义域和一个标量值的值域的函数表示,定义域中的数字是自然数,称为指标,不同的指标的个数有时称为向量的维度。) 
一个张量场是在欧氏空间中的每一点都给定一个张量值。这样不是像上面的例子中简单的有70个值,对于一个3阶张量,维度为<2,5,7>,空间中的每一个点有70个值和它相关。换句话说,张量场表示某个张量值的函数,其定义域为欧氏空间。

切换后端

如果你至少运行过一次Keras,将在下面的目录下找到Keras的配置文件:

~/.keras/keras.json 

文件默认配置如:

{"image_dim_ordering":"tf","epsilon":1e-07,"floatx":"float32","backend":"tensorflow",}#将backend字段的值改写为你需要使用的后端:theano或tensorflow,即可完成后端的切换
0 0