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数据集输入搭建的卷积神经网络,进行训练
卷积神经网络搭建
初步训练结果
结果反思
- 损失值存在许多尖峰脉冲,做出以下推断
- batch_size过小,目前是简单测试,每次只输入了一张照片,需要制作一次读取数据集中多个数据的函数。
- 数据集数据不太好,目测数据集的图片还比较好
- 学习率还是太大,可能性较小,学习率已经设置为0.0001,且设置了指数衰减学习率
- 卷积神经网络设置不恰当,如果是这个就比较难调了,因为一开始设置的时候就是设置的较适中的数值。
- 层数太少
- 卷积、池化核设置不合适
下一步方案
- 先对当前训练的模型,直接用训练集进行评估和单次输入测试。
- 单次输入测试老是被报错,模型恢复使用还没有弄通。
- 编写读取数据集中多个数据的函数
- 修改batch_size进行训练
- 尝试使用已经多次被练习的数据集进行训练测试cifar-10数据集