tensorflow本人智障错误汇总

1:安装GPU-tensorflow那些坑:

    详见我的另一篇因为中文输入法崩溃掉而写的英文博文。

2:tf.slice

     tf.slice可以给我们返回一个切成的slice的列表,别被官方文档的例子迷惑了

3:legacy_seq2seq的输入

    要输入一个list, list里面都是长度为batch的一维tensor, 所以记得给placeholder切片。

4:   Dst tensor is not initialized.

    This is a common bug while training on a public SVM, and it's cause is that your GPU doesn't have enough memory for you. So if you're a user of NVIDIA-gpu, use the command  " nvidia-smi " to check what's happening in your GPU.

5:  手动指定GPU之后意外小规模地使用了其他GPU

    原因:以指定在gpu6上计算为例。使用tf.device("/gpu:6")只是保证tensorflow只使用gpu6计算,其他gpu还是会按照规定的使用率(默认是占满)去占

    解决方法是再手动指定一下可见设备,这样就强硬地解决了这个问题。

    代码:在引用了os库之后      os.environ["CUDA_VISIBLE_DEVICES"] = "6"

                 或是在运行前,在终端使用cuda的命令设置变量:CUDA_VISIBLE_DEVICES=0 python xxx.py

   其中xxx.py就是你要执行的python脚本的文件名

6:有关循环

    在构图的时候永远也不要用for循环,否则Tensorflow的拓扑排序会失败:它不知道什么顺序什么时候究竟发生了什么,以及变量复用可能带来的一系列情况,使得计算图出现有向环,拓扑排序失败。

    解决办法:使用tf.while_loop()函数,要特别注意的是千万千万避免出现以下情况:A在cond和body之前定义,在cond和body里面又调用一次,然后在cond和body之后再用,这样会报错:A在循环中。此外,还要注意的是循环的变量默认形状是不能变的,若要变化需要在while_loop()参数中指定一个更为宽松的形状条件,比如A在两次循环中维度为[10, 20], [10, 30],之后都是第二个元素在变,那么就将A的形状指定为[10, None]就完事大吉了

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值