使用tf.keras.MaxPooling1D出現(xiàn)錯誤問題及解決
使用tf.keras.MaxPooling1D出現(xiàn)錯誤
錯誤如下
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對應(yīng)于具有形狀(batch, length, channels)的輸入,而channels_first對應(yīng)于具有形狀(batch, channels, length)的輸入。name
:一個字符串,表示層的名稱。
出現(xiàn)錯誤原因
是圖片通道的問題,也就是”channels_last”和”channels_first”數(shù)據(jù)格式的問題。
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')?
我的處理方法
直接在出現(xiàn)錯誤的代碼中補充一個參數(shù),加上data_format='channels_first'就可以啦,,
pool_4 = MaxPooling1D(pool_size=2, name='pool_4',data_format='channels_first')(conv_4)
注:此方法適用MaxPooling2D
MaxPooling1D和GlobalMaxPooling1D區(qū)別
import tensorflow as tf from tensorflow import keras input_shape = (2, 3, 4) x = tf.random.normal(input_shape) print(x) y=keras.layers.GlobalMaxPool1D()(x) print("*"*20) print(y) ''' """Global average pooling operation for temporal data. Examples: >>> input_shape = (2, 3, 4) >>> x = tf.random.normal(input_shape) >>> y = tf.keras.layers.GlobalAveragePooling1D()(x) >>> print(y.shape) (2, 4) Arguments: data_format: A string, one of `channels_last` (default) or `channels_first`. The ordering of the dimensions in the inputs. `channels_last` corresponds to inputs with shape `(batch, steps, features)` while `channels_first` corresponds to inputs with shape `(batch, features, steps)`. Call arguments: inputs: A 3D tensor. mask: Binary tensor of shape `(batch_size, steps)` indicating whether a given step should be masked (excluded from the average). Input shape: - If `data_format='channels_last'`: 3D tensor with shape: `(batch_size, steps, features)` - If `data_format='channels_first'`: 3D tensor with shape: `(batch_size, features, steps)` Output shape: 2D tensor with shape `(batch_size, features)`. """ ''' print("--"*20) input_shape = (2, 3, 4) x = tf.random.normal(input_shape) print(x) y=keras.layers.MaxPool1D(pool_size=2,strides=1)(x) # strides 不指定 默認等于 pool_size print("*"*20) print(y)
輸出如下圖 上圖GlobalMaxPool1D 相當(dāng)于給每一個樣本每列的最大值
而MaxPool1D就是普通的對每一個樣本進行一個窗口(1D是一維列窗口)滑動取最大值。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python中pandas庫中DataFrame對行和列的操作使用方法示例
這篇文章主要介紹了python中pandas庫中DataFrame對行和列的操作使用方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06PyCharm遠程調(diào)試代碼配置以及運行參數(shù)設(shè)置方式
這篇文章主要介紹了PyCharm遠程調(diào)試代碼配置以及運行參數(shù)設(shè)置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01pyecharts繪制各種數(shù)據(jù)可視化圖表案例附效果+代碼
這篇文章主要介紹了pyecharts繪制各種數(shù)據(jù)可視化圖表案例并附效果和代碼,文章圍繞主題展開詳細的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06Django Docker容器化部署之Django-Docker本地部署
這篇文章主要介紹了Django Docker容器化部署之Django-Docker本地部署,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10python非單一.py文件用Pyinstaller打包發(fā)布成exe
第一次將自己做的python爬蟲項目打包成exe,所以留個筆記,本文詳細的介紹了python非單一.py文件用Pyinstaller打包發(fā)布成exe,具有一定的參考價值,感興趣的可以了解一下2022-03-03Python計算質(zhì)數(shù)的方法總結(jié)
質(zhì)數(shù)(Prime?Number)是指大于1且只能被1和自身整除的正整數(shù),計算質(zhì)數(shù)是數(shù)論中的一個經(jīng)典問題,本文將介紹python中多種計算質(zhì)數(shù)的方法,希望對大家有所幫助2023-11-11