tfrecords读取加载的坑

花了两天时间研究tfrecords,错在最原始的地方是最难找的bug

1.tf.train.string_input_producer([filename],num_epochs=100)
num_epochs=None时 默认无限循环
设置num_epochs注意

init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
self.sess.run(init_op)

2.error:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 50176 values, but the requested shape has 150528
[[{{node Reshape}} = Reshape[T=DT_UINT8, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"](DecodeRaw, Reshape/shape)]]
经过N次测试得到的结论:
图片本身的原因导致无法reshape

3.读取tfrecord数据训练时打乱得不充分,

min_after_dequeue 越大随机效果越好但会占用更多的时间和内存,capacity 必须比 min_after_dequeue 大,建议capacity的取值:min_after_dequeue + (num_threads + a small safety margin) * batch_size

4.遇到bug:多分类或者二分类训练的模型预测结果都预测成某一类,为了验证模型是否有问题,所以拿训练时候的val的tfrecord数据来验证,之前读取tfrecord文件时候,总是要初始化,不然无法读取报错,

init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
self.sess.run(init_op)

就会出现用restore的模型预测的准确率没有之前训练时候的高,训练时候0.94±,现在0.46±,把初始化给注释掉(我也觉得不应该初始化)就恢复训练时候的准确率了.由此可得,训练时候的模型是ok的,做单张图片预测的准确率都预测成某一类确实是我预测脚本的问题,具体问题待查.

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值