TensorFlow 函式用法講解

2021-08-22 12:05:24 字數 2869 閱讀 8756

目錄

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...