一.創建Tensor
首先讓我們先調用相關度的庫
import tensorflow as tf
import numpy as np
1. numpy,list中得到tensor。`
tf.convert_to_tensor(np.ones([2, 3]))
tf.convert_to_tensor(np.zeros([2, 3]))
tf.convert_to_tensor([1, 2])
tf.convert_to_tensor([1, 2.])
zeros, ones分別新建一個全是0和全是1的tensor。結果如下:
在list中一個int類型,一個float類型默認轉換爲float類型。list[1, 2, (1, 2)]這樣是錯誤的,因爲接受的list是可以轉換爲tensor的類型。
2.tf.zeros() 和 tf.zeros_like()
tf.zeros([3,2])
tf.zeros_like([4,3,2])
運行結果如下:
他們的區別在於,tf.zeros_like()是根據傳進來tensor的shape新建一個全0的tensor。
3.Fill
tf.fill([2,2],1)
運行結果如下:
對於fill,它的第一參數爲維度,第二參數爲填充值。
4.正態分佈normal
tf.random.normal([2,2], mean=1, stddev=1
這裏的mean代表均值,stddev代表方差。默認值分別爲0和1
運行結果如下:
爲了去掉偏離過大的正態分佈,也就是隨機出來的數據如果偏離平均值超過兩個標準差,就需要重新生成。我們可以做出以下更改,效果會優於前者:
tf.random.truncated_normal([2,2], mean=1, stddev=1)
運行結果如下:
5.均勻分佈uniform
tf.random.uniform([2,2], minval=0, maxval=1)
minval和maxval分別代表最小和最大值
運行結果如下:
二. 不同維度tensor數據的典型應用
1.scalar 標量的典型應用:loss, accuracy
拿loss作爲例子,直接上代碼:
import tensorflow as tf
out = tf.random.uniform([4, 10])
print(out)
y = tf.range(4)
y = tf.one_hot(y, depth=10)
print(y)
loss = tf.keras.losses.mse(y, out)
print(loss)
loss_ave = tf.reduce_mean(loss)#得到一個平均樣本的loss
print(loss_ave)
out, y, loss, loss_ave的輸出結果分別如下:
2.Matrix矩陣典型應用
import tensorflow as tf
from tensorflow.keras import layers
x = tf.random.normal([4, 784])
net = layers.Dense(10)
print(net(x).shape)
print(net.kernel.shape)
print(net.bias.shape)
四張28*28的照片,打平之後變爲784。送入網絡後查看每張照片的維度,並且輸出w和b的維度:
3.Dimension=4的tensor應用:圖片
import tensorflow as tf
from tensorflow.keras import layers
x = tf.random.normal((4, 32, 32, 3))
net = layers.Conv2D(16, kernel_size=3) #卷積對象net,卷積核個數16,卷積核大小3×3
net(x) #tensor送入卷積
print(x.shape)
輸出結果:
本文參考來源:TensorFlow2.0筆記
參考來源網址:https://blog.csdn.net/abc13526222160/article/details/89043700