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

淺談keras中的Merge層(實現(xiàn)層的相加、相減、相乘實例)

 更新時間:2020年05月23日 10:48:41   作者:C小C  
這篇文章主要介紹了淺談keras中的Merge層(實現(xiàn)層的相加、相減、相乘實例),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

【題目】keras中的Merge層(實現(xiàn)層的相加、相減、相乘)

詳情請參考:

Merge層

一、層相加

keras.layers.Add()

添加輸入列表的圖層。

該層接收一個相同shape列表張量,并返回它們的和,shape不變。

Example

import keras
 
input1 = keras.layers.Input(shape=(16,))
x1 = keras.layers.Dense(8, activation='relu')(input1)
input2 = keras.layers.Input(shape=(32,))
x2 = keras.layers.Dense(8, activation='relu')(input2)
added = keras.layers.Add()([x1, x2]) # equivalent to added = keras.layers.add([x1, x2])
 
out = keras.layers.Dense(4)(added)
model = keras.models.Model(inputs=[input1, input2], outputs=out)

二、層相減

SubStract

keras.layers.Subtract()

兩個輸入的層相減。

它將大小至少為2,相同Shape的列表張量作為輸入,并返回一個張量(輸入[0] - 輸入[1]),也是相同的Shape。

Example

import keras
 
input1 = keras.layers.Input(shape=(16,))
x1 = keras.layers.Dense(8, activation='relu')(input1)
input2 = keras.layers.Input(shape=(32,))
x2 = keras.layers.Dense(8, activation='relu')(input2)
# Equivalent to subtracted = keras.layers.subtract([x1, x2])
subtracted = keras.layers.Subtract()([x1, x2])
 
out = keras.layers.Dense(4)(subtracted)
model = keras.models.Model(inputs=[input1, input2], outputs=out)

三、層相乘

Multiply

keras.layers.Multiply()

該層接收一個列表的同shape張量,并返回它們的逐元素積的張量,shape不變。

注意:keras.layers.add(inputs)、keras.layers.subtract(inputs)、keras.layers.multiply(inputs)分別是對應(yīng)的層包裝,一般只用層包裝。

補充知識:Keras天坑:想當(dāng)然的對層的直接運算帶來的問題

天坑

keras如何操作某一層的值(如讓某一層的值取反加1等)?keras如何將某一層的神經(jīng)元拆分以便進(jìn)一步操作(如取輸入的向量的第一個元素乘別的層)?keras如何重用某一層的值(如輸入層和輸出層乘積作為最終輸出)?

這些問題都指向同一個答案,即使用Lambda層。

另外,如果想要更加靈活地操作層的話,推薦使用函數(shù)式模型寫法,而不是序列式。

Keras當(dāng)中,任何的操作都是以網(wǎng)絡(luò)層為單位,操作的實現(xiàn)都是新添一層,不管是加減一個常數(shù)還是做乘法,或者是對兩層的簡單拼接。

所以,將一層單獨劈一半出來,是一件難事。強調(diào),Keras的最小操作單位是Layer,每次操作的是整個batch。

自然,在keras中,每個層都是對象,可以通過dir(Layer對象)來查看具有哪些屬性。

然而,Backend中Tensorflow的最小操作單位是Tensor,而你搞不清楚到底是Layer和Tensor時,盲目而想當(dāng)然地進(jìn)行層的操作,就會出問題。到底是什么?通過type和shape是看不出來的。

如果你只是想對流經(jīng)該層的數(shù)據(jù)做個變換,而這個變換本身沒有什么需要學(xué)習(xí)的參數(shù),那么直接用Lambda Layer是最合適的了。

也就是說,對每一層的加減乘除都得用keras的函數(shù),你不能簡單使用形如 ‘new_layer' =1−= 1-=1−'layer'這樣的表達(dá)方式來對層進(jìn)行操作。

當(dāng)遇到如下報錯信息:

AttributeError: 'NoneType' object has no attribute '_inbound_nodes'

TypeError: 'Tensor' object is not callable

等等

這是就要考慮一下將程序中層的操作改成Lambda的方式表達(dá)。

使用Lambda編寫自己的層

Lamda層怎么用?官方文檔給了這樣一個例子。

# add a x -> x^2 layer
model.add(Lambda(lambda x: x ** 2))

# add a layer that returns the concatenation
# of the positive part of the input and
# the opposite of the negative part

def antirectifier(x):
  x -= K.mean(x, axis=1, keepdims=True)
  x = K.l2_normalize(x, axis=1)
  pos = K.relu(x)
  neg = K.relu(-x)
  return K.concatenate([pos, neg], axis=1)

def antirectifier_output_shape(input_shape):
  shape = list(input_shape)
  assert len(shape) == 2 # only valid for 2D tensors
  shape[-1] *= 2
  return tuple(shape)

model.add(Lambda(antirectifier,
     output_shape=antirectifier_output_shape))

乍一看,有點懵逼,什么亂七八糟的。事實上,很簡單,假設(shè)L0和L1是兩層,你只要將你形如下面這樣的表達(dá):

L1 = F(L0);

改成

L1 = Lambda( lambda L0:F(L0) ) (L0)

即可。為了看得清楚,多加了幾個空格。

事實上,無非就是將原來的變換,通過Lambda(lambda 輸入:表達(dá)式)這樣的方式,改成了Lambda型函數(shù),再把輸入傳進(jìn)去,放在尾巴上即可。

參考

https://keras-cn.readthedocs.io/en/latest/layers/core_layer/#lambda

(個人覺得這份文檔某些地方比官方中文要完整許多)

keras許多簡單操作,都需要新建一個層,使用Lambda可以很好完成需求。當(dāng)你不知道有這個東西存在的時候,就會走不少彎路。

以上這篇淺談keras中的Merge層(實現(xiàn)層的相加、相減、相乘實例)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 將 QQ 好友頭像生成祝福語的實現(xiàn)代碼

    Python 將 QQ 好友頭像生成祝福語的實現(xiàn)代碼

    這篇文章主要介紹了用 Python 將 QQ 好友頭像生成祝福語的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • tensorflow 模型權(quán)重導(dǎo)出實例

    tensorflow 模型權(quán)重導(dǎo)出實例

    今天小編就為大家分享一篇tensorflow 模型權(quán)重導(dǎo)出實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python使用pygame創(chuàng)建精靈Sprite

    python使用pygame創(chuàng)建精靈Sprite

    這篇文章主要介紹了使用Pygame創(chuàng)建精靈Sprite,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python變量基礎(chǔ)知識

    Python變量基礎(chǔ)知識

    這篇文章主要介紹Python變量的基礎(chǔ)知識,圍繞Python變量相關(guān)知識點展開,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-10-10
  • Python在cmd上打印彩色文字實現(xiàn)過程詳解

    Python在cmd上打印彩色文字實現(xiàn)過程詳解

    這篇文章主要介紹了Python在cmd上打印彩色文字實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 將tf.batch_matmul替換成tf.matmul的實現(xiàn)

    將tf.batch_matmul替換成tf.matmul的實現(xiàn)

    這篇文章主要介紹了將tf.batch_matmul替換成tf.matmul的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python提取具有某種特定字符串的行數(shù)據(jù)方法

    python提取具有某種特定字符串的行數(shù)據(jù)方法

    今天小編就為大家分享一篇python提取具有某種特定字符串的行數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python 轉(zhuǎn)移文件至云對象存儲的方法

    Python 轉(zhuǎn)移文件至云對象存儲的方法

    對象存儲(Cloud Object Storage,COS)是一種存儲海量文件的分布式存儲服務(wù),具有高擴展性、低成本、可靠安全等優(yōu)點。這篇文章主要介紹了Python 轉(zhuǎn)移文件至云對象存儲,需要的朋友可以參考下
    2021-02-02
  • 解決python3中解壓zip文件是文件名亂碼的問題

    解決python3中解壓zip文件是文件名亂碼的問題

    下面小編就為大家分享一篇解決python3中解壓zip文件是文件名亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Python學(xué)習(xí)筆記之讀取文件、OS模塊、異常處理、with as語法示例

    Python學(xué)習(xí)筆記之讀取文件、OS模塊、異常處理、with as語法示例

    這篇文章主要介紹了Python學(xué)習(xí)筆記之讀取文件、OS模塊、異常處理、with as語法,結(jié)合實例形式簡單分析了Python針對文件、目錄的讀取、異常處理等相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06

最新評論

班戈县| 沙湾县| 德化县| 昭通市| 马尔康县| 内丘县| 商洛市| 晴隆县| 博罗县| 翁牛特旗| 根河市| 胶南市| 永昌县| 绵竹市| 潮州市| 瓦房店市| 庆阳市| 莲花县| 莱州市| 上思县| 丹寨县| 石林| 阳东县| 法库县| 宿松县| 南陵县| 鄂伦春自治旗| 靖远县| 阿拉善盟| 临清市| 班戈县| 东平县| 富平县| 渑池县| 兴宁市| 金湖县| 民乐县| 新津县| 新建县| 达孜县| 罗江县|