image 第二次使用就出错是怎么回事_使用tensorflow遇到的问题总结

e1b1d2002611e93cfb18de67fe847bd6.png

之前一直在用pytorch,最近需要用到tensorflow,遇到了很多问题,记录一下下

  1. 首先是使用tensorflow,如何进行数据的标准化

首先不同框架默认的通道顺序


tensorflow: NHWC
OpenCV: NHWC

pytorch: NCHW

tensorflow的通道在最后。

首先为什么需要进行数据处理:总结起来我的理解是,相当于把数据放在同一个坐标系下,这样特征对于网络来说更明显。

然后标准化方法

蒋竺波:CNN 入门讲解:什么是标准化(Normalization)?​zhuanlan.zhihu.com
8e8a5b28072ce0afa928ee2973e96da3.png

纠结了很久归一化和标准化,总结一下,大概是,归一化和常说的标准化是将数据进行处理的不同方式,常用的标准化是Z-score标准化,就是减去mean,再除以均值。

x = (x - u)/σ

  • u: 所有样本数据的均值
  • σ: 为所有样本数据的标准差

还有针对一张图片的标准化公式。

Z-score标准化用tensorflow实现时:

original_image = (original_image - np.array(self.mean)) / np.array(self.std)

mean和std额外求出。

目前暂时没发现这样处理不对,有问题请告诉我。

2.tensorflow使用gpu

如何在tensorflow中使用gpu运算呢

在pytorch中,如果想要使用gpu,首先在main.py函数里加上调用gpu的命令

import os

os.environ["CUDA_VISIBLE_DEVICES"] = '0'

然后再使用模型时,以及带有梯度的变量都需要加上.cuda( )这个属性。

然而在tensorflow中,并没有.cuda( )这个语句。目前为止我了解到的,在tensorflow中使用gpu,就在main.py里加上gpu调用就好了,不需要给model和变量加.cuda( )之类的东西。在tensorflow中也可以使用:

import os

os.environ["CUDA_VISIBLE_DEVICES"] = '0'

也可以:

with tf.device('/gpu:7'):

……

main()

当然还可以进行更精细的操作。

3. 遇到了用了gpu,gpu也有内存占用,但是非常少,只有150m,这是怎么回事呢

后来发现了,原来tensorflow版本和cuda cudnn版本不匹配

tensorflow 2.0.0

cuda 10.0

然而我的是cuda10.1,所以我应该用tensorflow2.1.0

tensorflow 2.1.0

cuda 10.1

cudnn 7.6

换完tensorflow 2.1.0之后就可以使用gpu了,但还是会报找不到一个文件的错误,但是似乎没影响训练,好像跟TensorRT有关,先不管了吧,这不是目前最紧要的问题

……………………………………剩下的就是一些碎碎念了……………………………………………………………

科研中失败居多,成功是很少的情况,但感觉真是很不想接受一次一次的实验效果不好,加上这个课题没有师兄师姐的经验,显得似乎更难了一些,不知道这是不是一种心理暗示,可能就算有师姐师兄的经验照样帮不上什么忙。想想叶修,已经站在顶峰了,但还是有从头再来的勇气和魄力,所以能再次回到荣耀之巅吧。一般人达到顶峰之后,可能怕失去荣耀的自己会遭到别人的嘲笑,害怕自己失去得到的这些,所以不敢失败了,更不敢从头开始,可能这也是叶修为什么叫君莫笑吧。从头开始,请诸君莫笑。恩,很洒脱

恩,加油加油~

6e8647a29e82f69d4c98b19e4f9d22b2.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值