最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用tf.keras.MaxPooling1D出現(xiàn)錯誤問題及解決

 更新時間:2022年12月16日 08:49:17   作者:IMWTJ  
這篇文章主要介紹了使用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(默認(rèn))或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 不指定 默認(rèn)等于 pool_size
print("*"*20)

print(y)

輸出如下圖 上圖GlobalMaxPool1D 相當(dāng)于給每一個樣本每列的最大值

而MaxPool1D就是普通的對每一個樣本進(jìn)行一個窗口(1D是一維列窗口)滑動取最大值。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

方山县| 乌什县| 霞浦县| 韶山市| 阜城县| 潮安县| 页游| 陆河县| 股票| 义乌市| 施甸县| 常州市| 梁平县| 嘉义县| 奉新县| 罗平县| 娱乐| 吉安县| 塔城市| 顺昌县| 久治县| 宣城市| 武城县| 平乐县| 腾冲县| 白水县| 清涧县| 巴塘县| 阿坝县| 泸州市| 错那县| 桃园县| 朝阳县| 五大连池市| 夏邑县| 乐都县| 黄骅市| 健康| 三都| 阿克陶县| 咸丰县|