1.1tensorflow作為常量的使用方法
importtensorflow as tf
#宣告乙個標量常量
t_1=tf.constant(2)
t_2=tf.constant(2)
#常量相加
t_add=tf.add(t_1,t_2)
#乙個形如一行三列的常量向量可以用如下**宣告
t_3=tf.constant([4,3,2])
#定義乙個形狀為[m,n]的全0張量和全1張量
zeros=tf.zeros(shape=[3,3])
ones=tf.ones(shape=[3,3])
1.2tensorflow作為變數的用法
在tensorflow中,模型的權值和偏置常常被定義為變數。變數在建立的時候,需要設定其初始化方法:可以直接賦值,也可以使用初始化函式。
#直接賦值初始化
import
tensorflow as tf
#直接給變數賦值初始化
bias1=tf.variable(2)
#通過initial_value顯示的賦值初始化
bias2=tf.variable(initial_value=3.)
#使用初始化函式初始化
a=tf.variable(tf.zeros([2,1]))#
將形狀為[2,1]張量初始化為0
b=tf.variable(tf.zeros_like(a))#
返回乙個和給定tensor同樣shape的tensor,其中的元素全部置0
c=tf.variable(tf.ones([2,1]))#
初始化為1
d=tf.variable(tf.ones_like(a))#
將與a乙個形狀的張量初始化為1
e=tf.fill([2,3],4)#
將指定形狀的張量初始化為指定數值
1.3張量(tensor)的屬性
tensorflow程式使用tensor資料結構來代表所有的資料,計算圖中,操作間傳遞的資料都是tensor。我們可以把張量看作是乙個n維的陣列或列表。在tensorflow 2.x中,張量的形狀、型別和值可以通過shape、dtype、numpy()方法獲得
importtensorflow as tf
a=tf.constant([[1.0,2.0],[3.0,4.0]])
(a.shape)
(a.dtype)
print(a.numpy())
1.4tensor的基礎運算操作
加、減、乘、除之類的運算
importtensorflow as tf
print(tf.add(1,2))#
0維張量相加
print(tf.add([1,2],[3,4]))#
一維張量相加
print(tf.matmul([[1,2,3],[[4],[5],[6]]))#
矩陣相乘
print(tf.square(5))#
計算5的平方
print(tf.pow(2,3))#
計算2的3次方
print(tf.square(2)+tf.square(3))#
也支援操作符過載
print(tf.reduce_sum([1,2,3]))#
計算數值的和
print(tf.reduce_mean([1,2,3]))#
計算均值
1.5低階api實現線性回歸
importtensorflow as tf
import
numpy as np
import
matplotlib.pyplot as plt
input_x=np.float32(np.linspace(-1,1,100))#
在區間[-1,1)內產生100個數的等差數列,作為輸入
input_y=2*input_x+np.random.randn(*input_x.shape)*0.3#
y=2x+隨機雜訊
weight=tf.variable(1.,dtype=tf.float32,name='
weight')
bias=tf.variable(1.,dtype=tf.float32,name='
bias')
def model(x): #
定義了線性模型y=weight*x+bias
pred=tf.multiply(x, weight)+bias
return
pred
step=0
opt=tf.optimizers.adam(1e-1) #
選擇優化器,是一種梯度下降的方法
for x,y in
zip(input_x,input_y):
x=np.reshape(x,[1])
y=np.reshape(y,[1])
step=step+1with tf.gradienttape()as tape:
loss=tf.losses.meansquarederror()(model(x),y)#
連續資料的**,損失函式用mse
grads=tape.gradient(loss,[weight,bias])#
計算梯度
更新引數weight和bias
print("
step:
",step,"
traing loss:
",loss.numpy())
#用matplotlib視覺化原始資料和**的模型
plt.plot(input_x,input_y,'
ro',label='
original data')
plt.plot(input_x, model(input_x),label='
predicted value')
plt.plot(input_x,2*input_x,label='
y=2x')
plt.legend()
plt.show()
(weight)
print(bias)
1.6高階api標準化搭建例項
以下為鳶尾花特徵分類實驗,實驗將搭建乙個三層的人工神經網路,用於特徵的分類。
①資料集介紹
iris也稱鳶尾花卉資料集,是一類多重變數分析的資料集。資料集包含150個資料,分為3類,每類50個資料,每個資料報含4個屬性。可通過花萼長度、花萼寬度、花瓣長度、花瓣寬度4個屬性**鳶尾花卉屬於iris setosa(山鳶尾)、iris versicolour(雜色鳶尾),以及 iris virginica(維吉尼亞鳶尾)這3個種類中的哪一類。iris 以鳶尾花的特徵作為資料**,常用在分類操作中。該資料集由3種不同型別的鳶尾花的各50個樣本資料構成。其中的乙個種類與另外兩個種類是線性可分離的,後兩個種類是非線性可分離的。
importtensorflow as tf
import
numpy as np
from sklearn.datasets import
load_iris
data=load_iris()#
讀取資料集
iris_data=np.float32(data.data)#
獲取資料集中的鳶尾花4個屬性
iris_target=data.target#
獲取鳶尾花的類別
iris_target=tf.keras.util.to_categorical(iris_target,num_classes=3)#
標籤轉為one-hot標籤
train_data=tf.data.dataset.from_tensor_slices((iris_data,iris_target)).batch(128)#
批量載入資料
inputs=tf.keras.layers.input(shape=(4))#
特徵共有四維,所以輸入為4
x=tf.keras.layers.dense(32,activation='
relu
')(inputs)
x=tf.keras.layers.dense(64,activation='
relu
')(x)
outputs=tf.keras.layers.dense(3,activation='
softmax
')(x)
model=tf.keras.model(inputs=inputs,outputs=outputs)
model.compile(optimizer=tf.optimizers.adam(ir=1e-3),loss=tf.losses.categorical_crossentropy,metrics=['
accuracy
'])#
模型編譯
model.fit(train_data,epochs=500)#
模型訓練
score=model.evaluate(iris_data,iris_target)#
模型評估
print("
last score:
",score)
tensorflow 學習 學習中
基於 virtualenv 的安裝 在 linux 上 sudo apt get install python pip python dev python virtualenv 在 mac 上 sudo easy install pip 如果還沒有安裝 pip sudo pip install up...
tensorflow學習筆記
tensorflow安裝可以直接通過命令列或者原始碼安裝,在此介紹tensorflow8命令列安裝如下 安裝tensorflow sudo pip install upgrade 另外,解除安裝tensorflow命令為 sudo pip uninstall tensorflow tensorflo...
Tensorflow學習筆記
1.如何在虛擬機器中安裝tensor flow 1 首先安裝pip pip install 2 pip install 2.學習tensorflow需要學習 python and linux 3.使用 tensorflow,你必須明白 tensorflow 1 使用圖 graph 來表示計算任務.2...