机器学习基础操作2-模型操作
TensorFlow机器学习基础操作
0x01创建模型操作
- 1.首先选择底层的模型,有2种基础模型
- Sequential 序贯模型,单输入单输出,层与层之间只有相邻关系,无跨层连接,编译较快,操作简单,使用较多
- Graph 图模型,这个模型支持多输入多输出,层与层之间想怎么连就怎么连,编译速度较慢
- 2.调节每层神经元参数
- Dense 是全连接层,表示添加一个层
- 第一个参数为输入,也就是神经元个数,
- 第二参数为activation,表示阶跃函数,常用的阶跃函数有relu,elu等
- 第三个常用参数为input_shape为输入的格式是一个横为784的特征数组
- units参数表示输出的空间维度
- Dropout() 避免过拟合出现的产物,在参数过多但是样本过少的情况下可以加上这一层
- 效果:随机删一半神经元,训练完后恢复,但是训练后的参数不变,重复这一过程(0.2表示20%)
- Dense 是全连接层,表示添加一个层
-
- 编译阶段,设置优化算法(用于梯度下降),损失函数(性能函数)和metrics (评价函数,直接影响acc准确率)
- metrics:
- binary_accuracy :适用于二分类问题
- sparse_categorical_accuracy :适用于多分类和多标签,真实值是下标index,预测值仍然是个向量 - 比较预测值中最大元素下标是否是index
- categorical_accuracy:适用于多分类和多标签,真实值和预测值都是一个one-hot向量- 它是比较两个最大元素下标是否相同

def create_model():
model = tf.keras.models.Sequential([
keras.layers.Dense(512,activation='relu',input_shape=(784,)),
keras.layers.Dropout(0.2),
keras.layers.Dense(10)
])
model.compile(optimizer='adam',
loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[tf.metrics.SparseCategoricalAccuracy()]
)
return model
查看模型的样例:
model.summary()

0x02模型训练
- 1.设置基础参数
- 1.训练数据,数据对应标签
- 2.设置epochs训练轮数
- 3.设置batch_size,每轮训练的大小
- validation_data 验证集
- callbacks回调函数,我们可以在每一轮训练完后执行回调函数,常见的就是防止过拟合,设置提早结束条件

回调函数设置了监控器和打印点
model.fit(train_images,
train_labels,
epochs=10,
validation_data=(test_images,test_labels),
callbacks=[cp_callback])
0x03保存和加载模型
第一种,保存权重
model.save_weights(path)
再训练
- 再加载
latest = tf.train.latest_checkpoint(checkpoint_dir)
model.load_weights(lastest)
手动加载
model.laod_weights('./checkpoints/my_checkpoint') # 位置
以h5形式保存

model.create_model()
model.fit(train_images,train_labels,epochs=5)
model.svae('save_model/my_model.h5')
#使用的时候加载
model.load('save_model/my_model.h5')
#再进行预测或者评估
#预测
example_batch = normed_train_data[:10]
example_retult = model.predict(example_batch)
verbose参数
详细信息
0表示不打印详细信息,1表示进度条打印详细信息,2表示每个轮训练输出一行

浙公网安备 33010602011771号