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)
參數:
a | 一個類型為 float16, float32, float64, int32, complex64, complex128 且張量秩 > 1 的張量 |
b | 一個類型跟張量a相同的張量 |
transpose_a | 如果為真, a則在進行乘法計算前進行轉置 |
transpose_b | 如果為真, b則在進行乘法計算前進行轉置 |
adjoint_a | 如果為真, a則在進行乘法計算前進行共軛和轉置 |
adjoint_b | 如果為真, b則在進行乘法計算前進行共軛和轉置 |
a_is_sparse | 如果為真, a會被處理為稀疏矩陣 |
b_is_sparse | 如果為真, b會被處理為稀疏矩陣 |
a,b的維數必須相同
import numpy as np
import tensorflow as tf
X = np.array([[1,2],
[2,2],
[3,2]])
W = np.array([[3,1,1,4],
[3,1,1,4]])
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
Input = tf.matmul(X,W)
result = sess.run(Input)
print(result)
[[ 9 3 3 12]
[12 4 4 16]
[15 5 5 20]]
b在神經網絡中一般用作權重矩陣,shape=[x,y],x為前一層神經網絡的神經元數量,y為后一層神經網絡的神經元數量
下面演示加上偏置bias,偏置采用以為數組,長度為后一層神經網絡的神經元數量
import numpy as np
import tensorflow as tf
X = np.array([[1,2],[2,2],[3,2]])
W = np.array([[3,1,1,4],[3,1,1,4]])
bias = np.array([1,2,3,4])
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
Input = tf.matmul(X,W) + bias
result = sess.run(Input)
print(result)
[[10 5 6 16]
[13 6 7 20]
[16 7 8 24]]
tf.multiply(x, y, name=None) ,兩個矩陣中對應元素各自相乘,最后返回數據的維數以最多維數據的維數相同
import numpy as np import tensorflow as tf a = np.array([[1,2], [2,3], [3,4]]) b= np.array([2,3]) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) Input = tf.multiply(a,b) result = sess.run(Input) print(result)
[[ 2 6]
[ 4 9]
[ 6 12]]