Keras

  • 不能直接import tensorflow.keras,而是应该直接用import tensorflow as tf然后调用tf.keras,但是可以用from tensorflow.keras import layers
  • 可以用tf.dataset.Dataset.from_tensor_slice将Numpy Array变为dataset
  • layers内置了各种常用计算网络的layers,同时也可以自己定义。
  • keras.Model 封装了用于建立、训练、评估、存储一个计算网络和用计算网络来推断新样本所需要的方法,model里面是一个一个的layer,而model本身只需要定义inputsoutputs。Model需要compile以后才能用。
  • model里面存储了所有的变量,比如一个2D卷积层的变量包括一个kernel和一个bias
  • Functional API 是定义model的结构的,它和自己定义的model subclassing一样,都是自定义model用的,看起来,用functional API定义好model是最不容易出错的,实在不行,自定义layers然后用functional API定义models也可以。
  • 定义一个customized model在eager execution模式下可以看到forward pass。但是如果直接在call函数内打断点,在计算网络执行的时候是不会停下的。
  • 可以存储且需要存储的主要有网络的结构和网络内部的参数。

Eager Execution

  • 这个模式下,用交互式python就可以直接出结果,是动态执行,不是静态建立好了计算网络再执行。
  • model不需要compile也能直接计算。
  • 训练过程是显性的,每一次计算梯度、参数值的更新都是可见的、在一个for loop里面的
  • tf.Variable的数据类型是根据输入自动决定的,比如tf.Variable([3])的类型是interger
  • self.kernel = self.add_variable("kernel", [input_shape[-1], self.output_units]) 要改为[int(input_shape[-1]), int(self.output_units)]
  • 总之,在Eager Execution下,最大的特点就是不需要session了。
01-16 15:43