Keras:ValueError: Negative dimension size caused by subtracting 2 from 1 for...

使用keras时遇到如下错误:

ValueError: Negative dimension size caused by subtracting 2 from 1 for 'block2_pool/MaxPool' (op: 'MaxPool') with input shapes: [?,1,75,128].

后发现是图片通道顺序的问题.

打开主文件夹—–> Ctrl+h查看隐藏文件夹—–> 找到.keras文件夹.

可以看到参数image_data_format的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。如图:
这里写图片描述
以128x128的RGB图像为例channels_last应将数据组织为(128,128,3),而channels_first将数据组织为(3,128,128).
通过查看函数set_image_dim_ordering():

def set_image_dim_ordering(dim_ordering):
    """Legacy setter for `image_data_format`.

    # Arguments
        dim_ordering: string. `tf` or `th`.
    # Raises
        ValueError: if `dim_ordering` is invalid.
    """
    global _IMAGE_DATA_FORMAT
    if dim_ordering not in {'tf', 'th'}:
        raise ValueError('Unknown dim_ordering:', dim_ordering)
    if dim_ordering == 'th':
        data_format = 'channels_first'
    else:
        data_format = 'channels_last'
    _IMAGE_DATA_FORMAT = data_format

可知,tf对应原本的channels_last,th对应channels_first。
因此,添加:

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

这样保证要使用的通道顺序和配置的通道顺序一致.然后,再次运行问题消除.

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值