TensorFlow2 Part3:动态模型建立与训练
Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化 [1] 。
在 TensorFlow 中,推荐使用 Keras( tf.keras )构建模型。
- Kera有两个非常重要的概念,模型(Model)和层(Layer)。
- 层将各种计算流程和变量进行了封装
- 模型将各种层进行组织和连接,并封装成一个整体
Keras 模型以类的形式呈现,我们可以通过继承 tf.keras.Model 这个python类来定义自己的模型。
在继承类中,我们需要重写__init__(构造函数,初始化)和 call(input)(模型调用)两个方法,同时也可以根据自己的需要增加自定义的方法。
>>> import tensorflow as tf
>>> class MyModel(tf.keras.Model):
... def __init__(self):
... super().init
//此处添加初始化代码(包含call方法中会用到的各种层),例如:
// Layer1 = tf.keras.Layers.BuiltInLayer(...)
// Layer1 = example(...) //初始化各种层,定义好都是干啥的
... def call(self,input):
//此处添加模型调用的代码(处理输入并返回输出)
//描述各种数据是如何通过各种层最后得到输出
// x = Layer1(input)
//output = Layer2(x) //调用定义的层进行数据处理
... return output //返回结果
...
//还可添加自定义方法
- 再次进行线性回归
>>> import tensorflow as tf
>>> x = tf.constant([[1.,2.,3.],[4.,5.,6.]])
>>> y = tf.constant([[10.],[20.]])
>
>>> class Linear(tf.keras.Model):
... def __init__(self):
... super().__init__()
... self.dense = tf.keras.layers.Dense(
... units = 1,
... activation = None,
... kernel_initializer=tf.zeros_initializer(),
... bias_initializer = tf.zeros_initializer())
... def call(self,input):
... output = self.dense(input)
... return output
...
>>> model = Linear()
>>> optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)
>>> model = Linear()
>>> optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)
for i in range(100):
with tf.GradientTape() as tape:
y_pred = model(X)
loss = tf.reduce_mean(tf.square(y_pred - y))
grads = tape.gradient(loss, model.variables)
optimizer.apply_gradients(grads_and_vars=zip(grads, model.variables))
print(model.variables)
以后还是用pycharm吧,直接在cmd中用python看得我头晕眼花。。
–2019.8.25