Python 深度学习之登堂入室

Python基操

  • enumerate枚举乱序问题, 只有集合枚举顺序会错乱,而列表和元组不会
classes = {'daffodil', 'snowdrop', 'lilyvalley', 'bluebell'}
for index, name in enumerate(classes):
    print(index, name)
    
0 snowdrop
1 bluebell
2 lilyvalley
3 daffodil
classes = ['daffodil', 'snowdrop', 'lilyvalley', 'bluebell']
for index, name in enumerate(classes):

    print(index, name)

0 daffodil
1 snowdrop
2 lilyvalley
3 bluebell

classes = ('daffodil', 'snowdrop', 'lilyvalley', 'bluebell')
for index, name in enumerate(classes):
    print(index, name)

0 daffodil
1 snowdrop
2 lilyvalley
3 bluebell

深度学习

Cuda

  • CUDA 是 NVIDIA 公司的并行计算架构。 该架构通过利用 GPU 的处理能力,可大幅提升计算性能
  • Tensorflow + Cuda + cudnn + GTX1050Ti真香,CPU训练一轮的时间,用GPU直接就训练完了,但是本人的开发环境下,不知为何cuda老是报错:Attempting to fetch value instead of handling error Internal: failed to get device attribute 13 for device 0: CUDA_ERROR_UNKNOWN: unknown error,暂未找到原因和解决办法,初步推断是显存分配的问题,因为重启一下jupyter notebook的内核就正常了,然后运行一段时间后,又报错。(Anaconda3 + Python3.7 + Cuda10.0)

Tensorboard

可视化深度学习工具,神器,待探索

模型存储和复原

# 模型存储与恢复实例化
saver = tf.train.Saver() 
# 恢复存储模型
ckpt = tf.train.get_checkpoint_state(MODEL_SAVE_PATH) 
if ckpt and ckpt.model_checkpoint_path:
saver.restore(sess, ckpt.model_checkpoint_path)
with tf.Session() as sess:
    ckpt = tf.train.get_checkpoint_state(MODEL_SAVE_PATH) 
    if ckpt and ckpt.model_checkpoint_path:
        saver.restore(sess, ckpt.model_checkpoint_path)

小试牛刀

数据集制作

在网上随便找了一个鲜花的图片集,制作成tfrecords数据集输入搭建的卷积神经网络,进行训练
在这里插入图片描述

卷积神经网络搭建

在这里插入图片描述

初步训练结果

在这里插入图片描述在这里插入图片描述

结果反思

  • 损失值存在许多尖峰脉冲,做出以下推断
    1. batch_size过小,目前是简单测试,每次只输入了一张照片,需要制作一次读取数据集中多个数据的函数。
    2. 数据集数据不太好,目测数据集的图片还比较好
    3. 学习率还是太大,可能性较小,学习率已经设置为0.0001,且设置了指数衰减学习率
    4. 卷积神经网络设置不恰当,如果是这个就比较难调了,因为一开始设置的时候就是设置的较适中的数值。
      1. 层数太少
      2. 卷积、池化核设置不合适

下一步方案

  1. 先对当前训练的模型,直接用训练集进行评估和单次输入测试。
    1. 单次输入测试老是被报错,模型恢复使用还没有弄通。
  2. 编写读取数据集中多个数据的函数
  3. 修改batch_size进行训练
  4. 尝试使用已经多次被练习的数据集进行训练测试cifar-10数据集
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章