Tensor是Tensorflow中使用在計算圖中的最基本的數據單位,我們可以聲明Tensor為variable,或者為Tensor提供placeholer。但首先我們必須知道如何創建Tensor。
準備工作
當我們創建Tensor並定義其為Variable時,Tensorflow就計算圖中創建了相應圖形結構。需要指出的一點是,我們創建了Tensor,並不意味著已經將其傳入計算圖。在將Tensor定義為Variable之後,Tensorflow才會將其傳入計算圖。
如何操作
我們將在這裡介紹創建Tensor的主要方法。
常量Tensor用『zero』填充Tensorzero_tsr = tf.zeros([row_dim, col_dim])用『one』填充Tensor ones_tsr = tf.ones([row_dim, col_dim])使用現有常數創建Tensor constant_tsr = tf.constant([1,2,3])映射Tensor我們也可以映射其他Tensor來創建新的Tensor。 zeros_similar = tf.zeros_like(constant_tsr)ones_similar = tf.ones_like(constant_tsr)注意:通過這種方法創建的Tensor,要首先初始化原Tensor,如果同時初始化系統會報錯。序列TensorTensorflow允許我們定義數組Tensor。通過類似於range()或者np.linespace的操作,來定義Tensor,例如:linear_tsr = tf.linspace(start=0, stop=1, start=3)輸出是:數組 [0.0, 0.5, 1.0].這個函數的輸出是包含兩頭的定義值得與之相區別的是:nteger_seq_tsr = tf.range(start=6, limit=15, delta=3)輸出是:數組[6, 9, 12]. 這個函數的輸出是不包含兩頭的定義值得隨機Tensor以下生成的隨機數組是均勻分布的:randunif_tsr = tf.random_uniform([row_dim, col_dim],minval=0, maxval=1)請注意這種隨機的均勻分布數組,包含minval,但不包含maxval。(mival<=x<maxval)生成正態分布的隨機數組:randnorm_tsr = tf.random_normal([row_dim, col_dim],mean=0.0, stddev=1.0)有時我們希望生成一些在一定範圍內正態分布的數組。truncated_normal()函數可以包含標準差和平均值。runcnorm_tsr = tf.truncated_normal([row_dim, col_dim],mean=0.0, stddev=1.0)也許我們會對洗牌數組感興趣。可以通過random_shuffle()和random_crop()這個兩個函數來完成。shuffled_output = tf.random_shuffle(input_tensor)cropped_output = tf.random_crop(input_tensor, crop_size)後面我們會對3通道彩色圖片進行隨機裁剪,生成固定大小的圖片,可以使用cropped_output()函數,並給出圖片的最大尺寸值。cropped_image = tf.random_crop(my_image, [height/2, width/2, 3])如何工作
一旦我們決定如何創建Tensor,接下來我們可以使用Variable()函數來創建對應的variables, 並將創建的Tensor包含其中。
my_var = tf.Variable(tf.zeros([row_dim, col_dim]))
此外。。。
我們不受限於使用內置函數。我還可以將numpy array、python list以及常數轉換成Tensor,通過使用conver_to_tensor()函數。另外這個函數也可以接受將tensor作為輸入。