將tf.batch_matmul替換成tf.matmul的實(shí)現(xiàn)
我就廢話不多說了,大家還是直接看代碼吧~
import tensorflow as tf h_doc=tf.placeholder(tf.int32,[None,30,512]) h_query=tf.placeholder(tf.int32,[None,10,512]) temp = tf.matmul(h_doc, h_query, adjoint_b = True) # tf.batch_matmul(h_doc, h_query, adj_y=True) print(temp.get_shape())
(?, 30, 10)
補(bǔ)充知識(shí):tf.matmul() 和tf.multiply() 的區(qū)別
1.tf.multiply()兩個(gè)矩陣中對(duì)應(yīng)元素各自相乘
格式: tf.multiply(x, y, name=None)
參數(shù):
x: 一個(gè)類型為:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的張量。
y: 一個(gè)類型跟張量x相同的張量。
返回值: x * y element-wise.
注意:
(1)multiply這個(gè)函數(shù)實(shí)現(xiàn)的是元素級(jí)別的相乘,也就是兩個(gè)相乘的數(shù)元素各自相乘,而不是矩陣乘法,注意和tf.matmul區(qū)別。
(2)兩個(gè)相乘的數(shù)必須有相同的數(shù)據(jù)類型,不然就會(huì)報(bào)錯(cuò)。
2.tf.matmul()將矩陣a乘以矩陣b,生成a * b。
格式: tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
參數(shù):
a: 一個(gè)類型為 float16, float32, float64, int32, complex64, complex128 且張量秩 > 1 的張量。
b: 一個(gè)類型跟張量a相同的張量。
transpose_a: 如果為真, a則在進(jìn)行乘法計(jì)算前進(jìn)行轉(zhuǎn)置。
transpose_b: 如果為真, b則在進(jìn)行乘法計(jì)算前進(jìn)行轉(zhuǎn)置。
adjoint_a: 如果為真, a則在進(jìn)行乘法計(jì)算前進(jìn)行共軛和轉(zhuǎn)置。
adjoint_b: 如果為真, b則在進(jìn)行乘法計(jì)算前進(jìn)行共軛和轉(zhuǎn)置。
a_is_sparse: 如果為真, a會(huì)被處理為稀疏矩陣。
b_is_sparse: 如果為真, b會(huì)被處理為稀疏矩陣。
name: 操作的名字(可選參數(shù))
返回值: 一個(gè)跟張量a和張量b類型一樣的張量且最內(nèi)部矩陣是a和b中的相應(yīng)矩陣的乘積。
注意:
(1)輸入必須是矩陣(或者是張量秩 >2的張量,表示成批的矩陣),并且其在轉(zhuǎn)置之后有相匹配的矩陣尺寸。
(2)兩個(gè)矩陣必須都是同樣的類型,支持的類型如下:float16, float32, float64, int32, complex64, complex128。
引發(fā)錯(cuò)誤:
ValueError: 如果transpose_a 和 adjoint_a, 或 transpose_b 和 adjoint_b 都被設(shè)置為真
程序示例:
運(yùn)行結(jié)果:
注意:
在TensorFlow的世界里,變量的定義和初始化是分開的,所有關(guān)于圖變量的賦值和計(jì)算都要通過tf.Session的run來進(jìn)行。想要將所有圖變量進(jìn)行集體初始化時(shí)應(yīng)該使用tf.global_variables_initializer。
以上這篇將tf.batch_matmul替換成tf.matmul的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面
這篇文章主要為大家詳細(xì)介紹了python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07用Python進(jìn)行柵格數(shù)據(jù)的分區(qū)統(tǒng)計(jì)和批量提取
該教程其實(shí)源于web,我看到之后覺得很實(shí)用,于是自己又重復(fù)做了一遍,寫了詳細(xì)的注釋分享給大家,希望對(duì)大家的研究有幫助,本文講述了柵格的分區(qū)統(tǒng)計(jì),批量提取,深化理解遍歷循環(huán)等內(nèi)容2021-05-05Python中執(zhí)行存儲(chǔ)過程及獲取存儲(chǔ)過程返回值的方法
這篇文章主要介紹了Python中執(zhí)行存儲(chǔ)過程及獲取存儲(chǔ)過程返回值的方法,結(jié)合實(shí)例形式總結(jié)分析了Python調(diào)用存儲(chǔ)過程的常用方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-10-10python中關(guān)于py文件之間相互import的問題及解決方法
這篇文章主要介紹了python中關(guān)于py文件之間相互import的問題,本文用一個(gè)例子演示下如何解決python中循環(huán)引用的問題,需要的朋友可以參考下2022-02-02Python實(shí)現(xiàn)對(duì)百度云的文件上傳(實(shí)例講解)
下面小編就為大家?guī)硪黄狿ython實(shí)現(xiàn)對(duì)百度云的文件上傳(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10scrapy redis配置文件setting參數(shù)詳解
這篇文章主要介紹了scrapy redis配置文件setting參數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python Pandas pandas.read_sql函數(shù)實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于Python Pandas pandas.read_sql函數(shù)詳解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-06-06詳解如何使用Python實(shí)現(xiàn)復(fù)制粘貼的功能
pandas?里面有一個(gè)?pd.read_clipboard?函數(shù),可以根據(jù)你復(fù)制的內(nèi)容生成DataFrame。本文就利用這個(gè)函數(shù)實(shí)現(xiàn)復(fù)制粘貼的功能,感興趣的可以了解一下2023-01-01