使用tf.keras.MaxPooling1D出现错误

错误如下:

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

首先了解MaxPooling1D:

tf.layers.max_pooling1d(
    inputs,
    pool_size,
    strides,
    padding='valid',
    data_format='channels_last',
    name=None
)

用于1维输入的MaxPooling层

  • pool_size:表示pooling window的大小
  • strides:指定pooling操作的步长
  • padding:一个字符串。padding的方法:string,valid或same,大小写不敏感。
  • data_format:一个字符串,channels_last(默认)或channels_first中的一个,输入中维度的排序,channels_last对应于具有形状(batch, length, channels)的输入,而channels_first对应于具有形状(batch, channels, length)的输入。
  • name:一个字符串,表示层的名称。

出现错误原因:

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

其他人的处理方法:

查了很多方法我的问题都没有解决:

法一:配置.keras下的keras.json文件,将channels_last修改为channels_first

{
"image_data_format" : "channels_first",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "tensorflow"
}

法二:在运行代码前面加两行代码:

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

我的处理方法:

直接在出现错误的代码中补充一个参数,加上data_format='channels_first'就可以啦,,

pool_4 = MaxPooling1D(pool_size=2, name='pool_4',data_format='channels_first')(conv_4)

注:此方法适用MaxPooling2D

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
boston_housing module: Boston housing price regression dataset. cifar10 module: CIFAR10 small images classification dataset. cifar100 module: CIFAR100 small images classification dataset. fashion_mnist module: Fashion-MNIST dataset. imdb module: IMDB sentiment classification dataset. mnist module: MNIST handwritten digits dataset. reuters module: Reuters topic classification dataset. import tensorflow as tf from tensorflow import keras fashion_mnist = keras.datasets.fashion_mnist (x_train, y_train), (x_test, y_test) = fashion_mnist.load_data() mnist = keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() cifar100 = keras.datasets.cifar100 (x_train, y_train), (x_test, y_test) = cifar100.load_data() cifar10 = keras.datasets.cifar10 (x_train, y_train), (x_test, y_test) = cifar10.load_data() imdb = keras.datasets.imdb (x_train, y_train), (x_test, y_test) = imdb.load_data() # word_index is a dictionary mapping words to an integer index word_index = imdb.get_word_index() # We reverse it, mapping integer indices to words reverse_word_index = dict([(value, key) for (key, value) in word_index.items()]) # We decode the review; note that our indices were offset by 3 # because 0, 1 and 2 are reserved indices for "padding", "start of sequence", and "unknown". decoded_review = ' '.join([reverse_word_index.get(i - 3, '?') for i in x_train[0]]) print(decoded_review) boston_housing = keras.datasets.boston_housing (x_train, y_train), (x_test, y_test) = boston_housing.load_data() reuters= keras.datasets.reuters (x_train, y_train), (x_test, y_test) = reuters.load_data() tf.keras.datasets.reuters.get_word_index( path='reuters_word_index.json' )

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值