keras slice layer 層實(shí)現(xiàn)方式
注意的地方: keras中每層的輸入輸出的tensor是張量, 比如Tensor shape是(N, H, W, C), 對(duì)于tf后臺(tái), channels_last
Define a slice layer using Lamda layer def slice(x, h1, h2, w1, w2): """ Define a tensor slice function """ return x[:, h1:h2, w1:w2, :]
定義完slice function之后,利用lambda layer添加到定義的網(wǎng)絡(luò)中去
# Add slice layer slice_1 = Lambda(slice, arguments={'h1': 0, 'h2': 6, 'w1': 0, 'w2': 6})(sliced) # As for tensorfow backend, Lambda doesn't need output shape argument slice_2 = Lambda(slice, arguments={'h1': 0, 'h2': 6, 'w1': 6, 'w2': 12})(sliced)
補(bǔ)充知識(shí):tensorflow和keras張量切片(slice)
Notes
想將一個(gè)向量 分割成兩部分:
操作大概是:
在 TensorFlow 中,用 tf.slice 實(shí)現(xiàn)張量切片,Keras 中自定義 Lambda 層實(shí)現(xiàn)。
TensorFlow
tf.slice(input_, begin, size, name=None)
input_:tf.tensor,被操作的 tensor
begin:list,各個(gè)維度的開(kāi)始下標(biāo)
size:list,各個(gè)維度上要截多長(zhǎng)
import tensorflow as tf with tf.Session() as sess: a = tf.constant([1, 2, 3, 4, 5]) b = tf.slice(a, [0], [2]) # 第一個(gè)維度從 0 開(kāi)始,截 2 個(gè) c = tf.slice(a, [2], [3]) # 第一個(gè)維度從 2 開(kāi)始,截 3 個(gè) print(a.eval()) print(b.eval()) print(c.eval())
輸出
[1 2 3 4 5]
[1 2]
[3 4 5]
Keras
from keras.layers import Lambda from keras.models import Sequential import numpy as np a = np.array([[1, 2, 3, 4, 5]]) model = Sequential([ Lambda(lambda a: a[:, :2], input_shape=[5]) # 第二維截前 2 個(gè) ]) print(model.predict(a))
輸出
[[1. 2.]]
以上這篇keras slice layer 層實(shí)現(xiàn)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Anaconda創(chuàng)建Pytorch虛擬環(huán)境的排坑詳細(xì)教程
PyTorch是一個(gè)開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù),基于Torch,用于自然語(yǔ)言處理等應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于使用Anaconda創(chuàng)建Pytorch虛擬環(huán)境的相關(guān)資料,需要的朋友可以參考下2022-12-12Python 多個(gè)圖同時(shí)在不同窗口顯示的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python 多個(gè)圖同時(shí)在不同窗口顯示的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python數(shù)據(jù)分析之pandas函數(shù)詳解
這篇文章主要介紹了Python數(shù)據(jù)分析之pandas函數(shù)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的pandas函數(shù)的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04把JSON數(shù)據(jù)格式轉(zhuǎn)換為Python的類對(duì)象方法詳解(兩種方法)
本文通過(guò)兩種方法給大家介紹了把JSON數(shù)據(jù)格式轉(zhuǎn)換為Python的類對(duì)象,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-06-06在IPython中進(jìn)行Python程序執(zhí)行時(shí)間的測(cè)量方法
今天小編就為大家分享一篇在IPython中進(jìn)行Python程序執(zhí)行時(shí)間的測(cè)量方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11python中if的基礎(chǔ)用法(if?else和if?not)
if在Python中用作某個(gè)條件或值的判斷,下面這篇文章主要給大家介紹了關(guān)于python中if的基礎(chǔ)用法,主要包括if?else和if?not,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Python中g(shù)etservbyport和getservbyname函數(shù)的用法大全
在Python的網(wǎng)絡(luò)編程中,getservbyport()函數(shù)和getservbyname()函數(shù)是socket模塊中的兩個(gè)函數(shù),因此在使用這兩個(gè)函數(shù)時(shí),需要導(dǎo)入socket模塊,這篇文章主要介紹了Python中g(shù)etservbyport和getservbyname函數(shù)的用法,需要的朋友可以參考下2023-01-01Python socket實(shí)現(xiàn)的文件下載器功能示例
這篇文章主要介紹了Python socket實(shí)現(xiàn)的文件下載器功能,結(jié)合實(shí)例形式分析了Python使用socket模塊實(shí)現(xiàn)的文件下載器客戶端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下2019-11-11