目錄
1.tf.split 切割張量
2.tf.transpose 張量指定維度交換
3. tf.concat 指定維度連線
4.tf.reshape(tensor,shape,name) 轉換維度
5. tf.pad(tensor,paddings,mode,name,constant_values) 張量值填充
api原型(tensorflow 1.8.0):
tf.split(
value,
num_or_size_splits,
axis=0,
num=none,
name='split'
)
這個函式是用來切割張量的。輸入切割的張量和引數,返回切割的結果。
value
傳入的就是需要切割的張量。
這個函式有兩種切割的方式:比如說乙個20 * 30 * 40的張量
有兩種切割方式:
1. 如果num_or_size_splits
傳入的是乙個整數,這個整數代表這個張量最後會被切成幾個小張量。此時,傳入axis
的數值就代表切割哪個維度(從0開始計數)。呼叫tf.split(my_tensor, 2,0)
返回兩個10 * 30 * 40的小張量。
2. 如果num_or_size_splits
傳入的是乙個向量,那麼向量有幾個分量就分成幾份,切割的維度還是由axis
決定。比如呼叫tf.split(my_tensor, [10, 5, 25], 2)
,則返回三個張量分別大小為 20 * 30 * 10、20 * 30 * 5、20 * 30 * 25。很顯然,傳入的這個向量各個分量加和必須等於axis
所指示原張量維度的大小(10 + 5 + 25 = 40)。
tf.transpose(input, [dimension_1, dimenaion_2,..,dimension_n]):這個函式主要適用於交換輸入張量的不同維度用的,如果輸入張量是二維,就相當是轉置。dimension_n是整數,如果張量是三維,就是用0,1,2來表示。這個列表裡的每個數對應相應的維度。如果是[2,1,0],就把輸入張量的第三維度和第一維度交換。
import tensorflow as tf
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
x = tf.transpose(a, [1, 0])
with tf.session() as sess:
print(a)
print(sess.run(x))
print(a.shape, x.shape)
輸出:
[[1 2 3]
[4 5 6]]
[[1 4]
[2 5]
[3 6]]
(2, 3) (3, 2)
tf.concat(concat_dim, values, name='concat') 在指定維度,連線多個向量
import tensorflow as tf
# tensor t3 with shape [2, 3]
# tensor t4 with shape [2, 3]
tf.shape(tf.concat(0, [t3, t4])) ==> [4, 3]
tf.shape(tf.concat(1, [t3, t4])) ==> [2, 6]
inputss = tf.reshape(inputs, [-1, 2*h]) # inputs [b,t,2h] -> [b*t,2h]
ip = tf.matmul(inputss, w) # ip [b*t,2h]*[2h,4]=[b*t,4]
ip = tf.reshape(ip, [-1, t, num_tags]) # ip [b*t,4]->[b,t,4]
tensor是要填充的張量
padings 也是乙個張量,代表每一維填充多少行/列,但要求它的rank一定要和tensor的rank一樣
mode 可以取三個值,分別是"constant" ,"reflect","symmetric"
mode="constant" 是填充0
mode="reflect"是對映填充,上下(1維)填充順序和paddings是相反的,左右(零維)順序補齊
mode="symmetric"是對稱填充,上下(1維)填充順序是和paddings相同的,左右(零維)對稱補齊
constant_values 指定mode=constant 時,填充的值
t=[[2,3,4], [5,6,7]]
sess.run(tf.pad(t, [[1,2],[2,3]], mode="constant"))
輸出結果為:
array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 2, 3, 4, 0, 0, 0],
[0, 0, 5, 6, 7, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]], dtype=int32)
可以看到,上,下,左,右分別填充啦1,2,2,3行,剛好和paddings=[[1,2],[2,3]]相等,零填充
tensorflow一些函式用法筆記
range input producer limit,num epochs none,shuffle true,seed none,capacity 32,shared name none,name none 函式是用來控制輸入的通道,會生成0到limit 1個整數的佇列,在訓練過程就是從佇列中取數...
TensorFlow基本用法
author youngkl coding utf 8 import tensorflow as tf 1 2的矩陣 mat1 tf.constant 3.3.2 1的矩陣 mat2 tf.constant 2.3.ans tf.matmul mat1,mat2 此時ans無法直接輸出 啟動預設圖 ...
Tensorflow 筆記 第一講
概 述 一 基本概念 1 什麼是人工智慧 人工智慧的概念 機器模擬人的意識和思維 重要人物 艾倫 麥席森 圖靈 alan mathison turing 人物簡介 1912 年 6 月 23 日 1954 年 6 月 7 日,英國數學家 邏輯學家,被稱為電腦科學之父,人工智慧之父。相關事件 1 19...