训练一个简单的Tensorflow模型
当前使用Tensorflow训练一个模型的简单方法是通过Tensorflow的高级API,Keras。Keras提供两种编程模型:
Model
Sequential
Mode方式类似于函数式编程,每个操作将对数据进行输出,这样经过许多不同的层即可以获取到最后的输出。比如我们要对输入x进行如下操作:
函数式编程实现
函数式编程实现:
class MyModel(Model): def __init__(self): super(MyModel,self).__init__() self.conv1 = layers.Conv2D(filters=32,kernel_size=3,activation='relu') self.flatten = layers.Flatten() self.d1 = layers.Dense(units=128,activation='relu') self.d2 = layers.Dense(units=10,activation='softmax') def call(self,x): x = self.conv1(x) x = self.flatten(x) x = self.d1(x) x = self.d2(x) return x
训练一个模型首先需要确定:
使用什么样的优化器
使用什么损失函数
损失函数对于变量求梯度,然后将梯度应用在优化器中,更改优化器变量的值实现梯度下降。
在这里我们使用如下损失函数和优化器
loss_object = keras.losses.SparseCategoricalCrossentropy()optimizer = keras.optimizers.Adam()
训练流程:
计算前向输出
根据label和前向输出计算损失