TensorFlow2 Part3:动态模型建立与训练

Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化 [1] 。
在 TensorFlow 中,推荐使用 Keras( tf.keras )构建模型。

  1. 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

你可能感兴趣的:(TensorFlow2 Part3:动态模型建立与训练)