tensorflow学习(keras)
- 2019 年 10 月 6 日
- 筆記
keras是什么?
keras是一个可用于快速构建和训练深度学习模型的API。里面的模型的一般的使用流程如下:
- 构造数据
- 构造标签
- 构造输入层
- 构造隐藏层
- 构造输出层
- 实例化模型
- 配置模型
- 训练模型
简单模型的构建
通常是构建序列模型,也就是一个全连接的多层感知机:
代码如下:其中使用layers.Dense()函数设置每一层的相关配置,具体内容可参考官网
#实例化模型为model=tf.keras.Sequential() model=tf.keras.Sequential() #添加第一层,激活函数是relu model.add(layers.Dense(64,activation='relu')) #添加第二层,激活函数是relu model.add(layers.Dense(64,activation='relu')) #添加第三层,激活函数是softmax
模型的训练和评估
构建好模型后,通过调用 compile 方法配置该模型的学习流程:
optimizer
:此对象会指定训练过程。从tr.train模块向其传递优化器实例,例如tf.train.AdamOptimizer
、tf.train.RMSPropOptimizer
或tf.train.GradientDescentOptimizer
。loss
:要在优化期间最小化的函数。常见选择包括均方误差 (mse
)、categorical_crossentropy
和binary_crossentropy
。损失函数由名称或通过从tf.keras.losses
模块传递可调用对象来指定。metrics
:用于监控训练。它们是tf.keras.metrics
模块中的字符串名称或可调用对象。
model.compile(optimizer=tf.train.AdagradOptimizer(0.001),loss='categorical_crossentropy',metrics=['accuracy'])
高阶模型的构造
序列模型中,由于序列模型无法表达任意的模型,所以可以构建高阶模型来构建自己想要的模型,以下示例使用函数式 API 构建一个简单的全连接网络,构造构成其实和序列化的过程差不多:
#构造数据 data = np.random.random((1000, 32)) #构造标签 labels = np.random.random((1000, 10)) #构造输入层 inputs=tf.keras.Input(shape=(32,)) # 构造第一个隐藏层 x=layers.Dense(64,activation='relu')(inputs) # 构造第二个隐藏层 x=layers.Dense(64,activation='relu')(x) # 构造输出层 predic=layers.Dense(10,activation='softmax')(x) #实例化模型 model=tf.keras.Model(inputs=inputs,output=predic) # 配置模型 model.compile(optimizer=tf.train.RMSPropOptimizer(0.001),loss='categorical_crossentropy',metrics=['accuracy']) # 训练模型 model.fit(data,labels,batch_size=32,epochs=5)