机器学习基础操作2-模型操作

TensorFlow机器学习基础操作

0x01创建模型操作

  • 1.首先选择底层的模型,有2种基础模型
    • Sequential 序贯模型,单输入单输出,层与层之间只有相邻关系,无跨层连接,编译较快,操作简单,使用较多
    • Graph 图模型,这个模型支持多输入多输出,层与层之间想怎么连就怎么连,编译速度较慢
  • 2.调节每层神经元参数
    • Dense 是全连接层,表示添加一个层
      • 第一个参数为输入,也就是神经元个数,
      • 第二参数为activation,表示阶跃函数,常用的阶跃函数有relu,elu等
      • 第三个常用参数为input_shape为输入的格式是一个横为784的特征数组
      • units参数表示输出的空间维度
    • Dropout() 避免过拟合出现的产物,在参数过多但是样本过少的情况下可以加上这一层
      • 效果:随机删一半神经元,训练完后恢复,但是训练后的参数不变,重复这一过程(0.2表示20%)
    1. 编译阶段,设置优化算法(用于梯度下降),损失函数(性能函数)和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表示每个轮训练输出一行

posted @ 2021-12-05 23:11  泽小六不吃糖  阅读(107)  评论(0)    收藏  举报