TensorFlow2 notebook: Class4: 网络八股进行扩展, 增加自制数据集, 数据增强, 断点续训, 参数提取和acc/loss可视化, 最后实现给图识物的应用程序.

In summary

搭建网络八股总览

  • 自制数据集,解决本领域应用
    • 将自己本领域的数据和标签赋值给x_train, y_train, x_test, y_test
  • 数据增强,扩充数据集
    • 数据增强的代码: 数据量过少
  • 断点续训,存取模型
    • 断点续训的代码, 实时保存最优模型, 从而无需总是从零开始训练模型
  • 参数提取的代码, 将参数存入文本
  • acc/loss曲线绘制的代码, 可视化训练效果
  • 应用程序, 给图识物

自制数据集

  • 替代TensorFlow中自带函数.load_data()

数据增强

  • TensorFlow中的数据增强函数
1
tf.keras.preprocessing.image.ImageDataGenerator()
  • 调整函数中的参数
    • rescale= 所有数据将乘以该数值
    • rotation_range= 随机旋转角度数范围
    • width_shift_range= 随机宽度偏移量
    • height_shift_range= 随机高度偏移量
    • horizontal_flip= 是否随机水平翻转
    • zoom_range= 随机缩放的范围[1-n,1+n]

断点续训

  • 读取模型

    • TensorFlow中函数model.load_weights(路径文件名),读取已有模型参数
  • 保存模型

    1
    
    cp_callback=tf.keras.callbacks.ModelCheckpoint()
    
  • 继续从上次模型训练结果进行

  • 生成的checkpoint文件夹中存放的就是模型参数

参数提取

  • 提取可训练参数

    • model.trainable_variables 返回模型中可训练的参数
  • 设置print输出格式

    1
    2
    
    np.set_printoptions(threshold=超过多少省略显示)
    threshold=np.inf表示无限大
    
  • for loop将所有可训练的参数存入到weights.txt文件中

acc&loss可视化

  • history:

    • 训练集loss: loss
    • 测试集loss: val_loss
    • 训练集准确率: sparse_categorical_accuracy
    • 测试集准确率: val_sparse_categorical_accuracy
  • history.history从model.fit中提取

    1
    2
    3
    4
    
    acc = history.history['sparse_categorical_accuracy']
    val_acc = history.history['val_sparse_categorical_accuracy']
    loss = history.history['loss']
    val_loss = history.history['val_loss']
    

给图识物

  • 复现模型

    1
    2
    3
    4
    
    model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'), 
    tf.keras.layers.Dense(10, activation='softmax’)])
    
  • 加载保存在checkpoint文件中的参数

    1
    
    model.load_weights(model_save_path)`
    
  • 预测结果

    1
    
    result = model.predict(x_predict)
    

Attach is the file of TensorFlow2class4.ipynb, or view it via the link.

Show me the code

fig