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
本身只需要定义inputs
和outputs
。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])
的类型是intergerself.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