tensorflow :ValueError: Negative dimension size caused by subtracting 4 from 3 for ....报错

最近在跑TensorFlow项目的时候,报错了:ValueError: Negative dimension size caused by subtracting 4 from 3 for 'disc。。。

看到很多人说了原因,都不对,后面发现我自己的数据和原始数据不一样,导致报错。看来TensorFlow报错很笼统啊!

大部分人说

原因:
input_shape=(3,150, 150)是theano的写法,而tensorflow需要写出:(150,150,3);
需要修改Input_size。也就是"channels_last”和"channels_first"数据格式的问题。

也就是”channels_last”和”channels_first”数据格式的问题。 
input_shape=(3,150, 150)是theano的写法,而tensorflow需要写出:(150,150,3)。

也可以设置不同的后端来进行调整:

    from keras import backend as K  
    K.set_image_dim_ordering('th')  

    from keras import backend as K  
    K.set_image_dim_ordering('tf') 
但是我怀疑是TensorFlow接口函数变动导致的,然后我去查看官方手册,发现我的那个tf.layers.Conv2D作为底层函数,一直都

没有变过,所以也不是接口函数不兼容的问题,然后顺便试了试上面的方法,因为tf.layers.Conv2D函数有这个参数设置,还是

报错。后面我想去找等效的替换的函数,但是程序员的执拗,我放弃了这个方法,还好没有替换函数,因为后面发现根本不是函数的问题啊,前面一直找错了方向。。。。

最后我print看网络结构,发现是,输入图片尺寸不一样导致报错。那最终的方法就是resize成统一一样的啦。当然修改net结构适应你data的尺寸也行的。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值