AI——神經網絡以及TensorFlow使用

文章目錄

  • 一、TensorFlow安裝
  • 二、張量、變量及其操作
    • 1、張量Tensor
    • 2、變量
  • 三、tf.keras介紹
    • 1、使用tf.keras構建我們的模型
    • 2、激活函數
      • 1、sigmoid/logistics函數
      • 2、tanh函數
      • 3、RELU函數
      • 4、LeakReLu
      • 5、SoftMax
      • 6、如何選擇激活函數
    • 3、參數初始化
      • 1、bias偏置初始化
      • 2、weight權重初始化
        • 1、隨機初始化
        • 2、標準初始化
        • 3、Xavier初始化
        • 4、He初始化
    • 4、神經網絡構建
      • 1、通過Sequential構建
      • 2、function api方式構建
      • 3、Model子類構建方式
    • 5、神經網絡的優缺點

一、TensorFlow安裝

# 1、非GPU版本安裝
pip3 install tensorflow==2.3.0# 2、GPU版本安裝
pip3 install tensorflow-gpu==2.3.0

二、張量、變量及其操作

1、張量Tensor

在這里插入圖片描述

import tensorflow as tf
import numpy as np# 創建基礎的張量
## 1.創建int32類型的0維張量,即標量
rank_0_tensor = tf.constant(4)
print(rank_0_tensor)## 2.創建float32類型的1維張量
rank_1_tensor = tf.constant([2.0, 3.0, 4.0])
print(rank_1_tensor)## 3.創建float16類型的二維張量
rank_2_tensor = tf.constant([[1, 2],[3, 4],[5, 6]
], dtype=tf.float16)
print(rank_2_tensor)## 4.將張量轉化為ndarray
np1 = np.array(rank_2_tensor)
print(np1)np2 = rank_2_tensor.numpy
print(np2)# 張量常用函數
a = tf.constant([[1, 2],[3, 4]
])
b = tf.constant([[1, 1],[1, 1]
])
print(tf.add(a, b)) # 計算張量元素的和
print(tf.multiply(a, b)) # 計算張量元素的乘積
print(tf.matmul(a, b)) # 計算張量矩陣的乘法# 聚合運算
c = tf.constant([[4.0, 5.0],[10.0, 1.0]
])
print(tf.reduce_max(c)) # 最大值
print(tf.reduce_mean(c)) # 平均值
print(tf.reduce_sum(c)) # 求和
print(tf.reduce_min(c)) # 最小值
print(tf.argmax(c)) # 最大值索引
print(tf.argmin(c)) # 最小值索引

2、變量

在這里插入圖片描述

# 變量
var = tf.Variable([[1, 2],[3, 4]
])
print(var.shape) # 獲取變量的形狀
print(var.dtype) # 獲取變量中數據類型
print(var.numpy) # 轉化為ndarray
print(var.assign([[5, 6], [7, 8]])) # 修改變量值

三、tf.keras介紹

在這里插入圖片描述

1、使用tf.keras構建我們的模型

# 繪圖工具
import seaborn as sns
# 數組計算
import numpy as np
# sklearn相關工具
from sklearn.datasets import load_iris
# 劃分測試集和訓練集
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# 邏輯回歸
from sklearn.linear_model import LogisticRegressionCV
# tf.keras中使用的相關工具
# 用于模型搭建
from tensorflow.keras.models import Sequential
# 構建模型的層和激活工具
from tensorflow.keras.layers import Dense, Activation
# 數據處理的輔助工具
from tensorflow.keras import utils
# pandas工具,讓數據更好看
import pandas as pd# 1.使用sklearn獲取鳶尾花數據
iris = load_iris()
iris_d = pd.DataFrame(data=iris.data, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'])
# 設置其目標值為target_names
iris_d['species'] = iris['target_names'][iris['target']]
# 使用seaborn中的pairplot函數探索數據特征間的關系
sns.pairplot(iris_d, hue="species")# 使用sklearn實現# 所有的特征值
x = iris_d.values[:, :4]# 所有的目標值
y = iris_d.values[:, 4]# 利用train_test_split完成數據集劃分,測試集20%,訓練集80%
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)# 特征預處理
# transfer = StandardScaler()
transfer = MinMaxScaler((0, 1))
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)## 模型調優 - 交叉驗證、網格搜索
# 實例化估計器,CV這個估計器已經調過優了
lr = LogisticRegressionCV()
# 模型訓練
lr.fit(x_train, y_train)
# 模型評估
lr.score(x_test, y_test)# 使用tf.keras實現
# 1.生成目標值的熱編碼
def one_hot_encode(arr):# 獲取目標值中的所有類別進行熱編碼uniques, ids = np.unique(arr, return_inverse=True)return utils.to_categorical(ids, len(uniques))# 2.對目標值進行熱編碼
y_train_one = one_hot_encode(y_train)
y_test_one = one_hot_encode(y_test)# 3.模型構建
model = Sequential([# 隱藏層,輸入層,input_shape表示我們有幾個特征Dense(10, activation="relu", input_shape=(4,)),# 隱藏層Dense(10, activation="relu"),# 輸出層,3表示我們有幾種結果Dense(3, activation="softmax")
])# 4.模型預測與評估
## 4.1 模型編譯
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])## 4.2 模型訓練
# 類型轉換
x_train = np.array(x_train, dtype=np.float32)
x_test = np.array(x_test, dtype=np.float32)
model.fit(x_train, y_train_one, epochs=10, batch_size=1, verbose=1)## 4.3模型評估
loss, accuracy = model.evaluate(x_test, y_test_one, verbose=1)
print("loss: ", loss)
print("準確率:", accuracy)

2、激活函數

1、sigmoid/logistics函數

在這里插入圖片描述
在這里插入圖片描述
一般只用于輸出層的二分類

2、tanh函數

在這里插入圖片描述
在這里插入圖片描述

3、RELU函數

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
無腦使用RELU

4、LeakReLu

在這里插入圖片描述

5、SoftMax

softmax用于多分類過程中,它是二分類函數sigmoid在多分類上的推廣,目的是將多分類的結果以概率的形式展示出來。
在這里插入圖片描述

6、如何選擇激活函數

在這里插入圖片描述

3、參數初始化

1、bias偏置初始化

直接初始化為0

2、weight權重初始化

1、隨機初始化

隨機初始化從均值為0,標準差是1的高斯分布中取樣,使用一些很小的值對參數w進行初始化

2、標準初始化

權重參數初始化從區間均勻隨機取值,即在(-1/根號d/,根號d/1)均勻分布中生成當前神經元的權重,其中d為每個神經元的輸入數量

3、Xavier初始化

該方法的基本思想是各層的激活值和梯度的方差在傳播過程中保持一致,也叫做Glorot初始化,在tf.keras中實現方法有兩種:

  • 正態化Xavier初始化
    在這里插入圖片描述
  • 標準化Xavier初始化
    在這里插入圖片描述
4、He初始化

he初始化,也稱為Kaiming初始化,他的基本思想是正向傳播時,激活值的方差保持不變;反向傳播時,關于狀態值的梯度的方差保持不變

  • 正太化的he初始化
    在這里插入圖片描述
  • 標準化的he初始化
    在這里插入圖片描述

4、神經網絡構建

1、通過Sequential構建

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers# 定義一個Sequential模型,包含3層
model = keras.Sequential([# 第一層:激活函數為relu,權重初始化為he_normallayers.Dense(3, activation="relu", kernel_initializer="he_normal", name="layer1", input_shape=(3, )),# 第二層:激活函數為relu,權重初始化為he_normallayers.Dense(2, activation="relu", kernel_initializer="he_normal", name="layer2"),# 第三次:激活函數為sigmoid,權重初始化和he_normallayers.Dense(2, activation="sigmoid", kernel_initializer="he_normal", name="layer3")
])model.summary()

2、function api方式構建

在這里插入圖片描述

# 使用function api方式構建神經網絡
import tensorflow as tf
# 定義模型的輸入
inputs = tf.keras.Input(shape=(3,), name = 'input')
# 第一層:激活函數為relu,其他默認
x = tf.keras.layers.Dense(3, activation='relu', name='layer1')(inputs)
# 第二層:激活函數為relu,其他默認
x = tf.keras.layers.Dense(2, activation='relu', name='layer2')(x)
# 第三次:輸出層,激活函數為sigmoid
outputs = tf.keras.layers.Dense(2, activation='sigmoid', name='layer3')(x)
# 使用Model創建模型
model = tf.keras.Model(inputs = inputs, outputs=outputs, name='my_model')
model.summary()

3、Model子類構建方式

# 使用Model子類的方式構建神經網絡
import tensorflow as tfclass MyModel(tf.keras.Model):# 在init方法中定義網絡的層結構def __init__(self):super(MyModel, self).__init__()# 第一層:激活函數為relu,權重初始化為he_normalself.layer1 = tf.keras.layers.Dense(3, activation='relu', kernel_initializer='he_normal', name='layer1', input_shape=(3,))# 第二層:激活函數為relu,權重初始化為he_normalself.layer2 = tf.keras.layers.Dense(2, activation='relu', kernel_initializer='he_normal', name='layer2')# 第三次:激活函數為sigmoid,權重初始化為he_normalself.layer3 = tf.keras.layers.Dense(2, activation='sigmoid', kernel_initializer='he_normal', name='layer3')# 在call方法中完成前向傳播def call(self, inputs):x = self.layer1(inputs)x = self.layer2(x)return self.layer3(x)# 實例化model
model = MyModel()
# 設置一個輸入調用模型(否則無法使用summary方法)
x = tf.ones((1, 3))
y = model(x)
model.summary()

5、神經網絡的優缺點

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902555.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kubernetes (k8s) 日常運維命令總結

一、資源查看 查看所有命名空間的 Pod kubectl get pod --all-namespaces查看指定命名空間的 Pod kubectl get pod --namespace <命名空間>查看所有部署&#xff08;Deployments&#xff09; kubectl get deployments.apps --all-namespaces查看所有守護進程集&#xff0…

【PostgreSQL教程】PostgreSQL 特別篇之 語言接口連接Perl

博主介紹:?全網粉絲22W+,CSDN博客專家、Java領域優質創作者,掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域? 技術范圍:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大數據、物聯網、機器學習等設計與開發。 感興趣的可…

07-IDEA企業開發工具-開發入門程序

1. IDEA創建Java項目的代碼結構 項目結構: IDEA中的Java項目包含四種主要結構&#xff1a;工程(Project)、模塊(Module)、包(Package)、類(Class)。 工程(Project): 代表整個項目&#xff0c;通常是一個磁盤目錄或文件夾。模塊(Module): 工程下的子單元&#xff0c;用于劃分項…

深度解析云計算:概念、優勢與分類全覽

以下是對云計算概念、優點和分類更詳細的介紹&#xff1a; 一、云計算的概念 云計算是一種通過互聯網提供計算服務的模式&#xff0c;它基于虛擬化、分布式計算、網絡存儲等一系列先進技術&#xff0c;將計算資源進行整合和管理&#xff0c;形成一個龐大的資源池。這些資源包…

高并發系統的通用設計方法是什么?

背景 高并發系統的通用設計方法是解決系統在面對大量用戶訪問時的性能瓶頸問題。當系統遇到性能瓶頸時&#xff0c;通常是因為某個單點資源&#xff08;如數據庫、后端云服務器、網絡帶寬等&#xff09;達到了極限。 為了提升整個系統的容量&#xff0c;需要找到這個瓶頸資源…

【手機】vivo手機應用聲音分離方案

文章目錄 前言方案 前言 嘗試分離vivo手機音樂與其他應用的聲音 方案 最佳方案&#xff1a;網易云音樂設置內關閉音量均衡 上傳不同的白噪音&#xff0c;成功 goodlock&#xff0c;主要適用于三星手機&#xff0c;vivo不一定適用 app volume control &#xff0c;可行

一個報錯說函數為私有函數

你遇到的警告信息&#xff1a; warning: declaration of struct Zero2TenVDrv will not be visible outside of this function [-Wvisibility]這是編譯器提示你在某個函數內部聲明了一個結構體 struct Zero2TenVDrv&#xff0c;但這個結構體的聲明作用域僅限于該函數內部&…

3.2 Agent核心能力:感知、規劃、決策與執行

智能代理&#xff08;Agent&#xff09;是一種能夠在復雜環境中自主運作的計算實體&#xff0c;其智能行為依賴于四大核心能力&#xff1a;感知&#xff08;Perception&#xff09;、規劃&#xff08;Planning&#xff09;、決策&#xff08;Decision-making&#xff09;和執行…

圖解Mysql原理:深入理解事務的特性以及它的實現機制

前言 大家好&#xff0c;我是程序蛇玩編程。 Mysql中事務大家不陌生吧&#xff0c;事務就是要保證一組數據庫操作&#xff0c;要么全部成功&#xff0c;要么全部失敗。那它具有哪些特性&#xff0c;如何實現的呢?接著往下看。 正文 事務的特性: 事務的基本特性主要為四種…

進行網頁開發時,怎樣把function()中變量值在控制臺輸出,查看?

在網頁開發過程中&#xff0c;為了及時了解JavaScript中的function函數中的變量值&#xff0c;可以用控制臺命令console.log()把變量的值在控制臺輸出&#xff0c;方便調試時對函數變量值進行了解。 看下面的一段示例&#xff1a; <!DOCTYPE html> <html> &l…

linux內核進程管理(1)——創建,退出

linux源碼閱讀——進程管理&#xff08;1&#xff09; 1. 進程的基本介紹1.1 linux中進程和線程的區別1.2 task_struct中的基本內容1.3 命名空間ns(namespace)命名空間結構圖Linux 中的命名空間類型 1.4 進程標識符 2. 創建一個進程的流程2.1 CLONE宏2.2 創建進程系統調用1. do…

人像面部關鍵點檢測

此工作為本人近期做人臉情緒識別&#xff0c;CBAM模塊前是否能加人臉關鍵點檢測而做的嘗試。由于創新點不是在于檢測點的標注&#xff0c;而是CBAM的改進&#xff0c;因此&#xff0c;只是借用了現成庫Dilb與cv2進行。 首先&#xff0c;下載人臉關鍵點預測模型:Index of /file…

【Python】每隔一段時間自動清除網站上cookies的方法

我在寫爬蟲的時候&#xff0c;經常會因為點擊瀏覽太多的頁面&#xff0c;而導致很多的cookies累積。 雖然單個Cookie很小&#xff0c;但長期積累可能占用瀏覽器存儲空間&#xff0c;導致瀏覽器運行變慢&#xff08;尤其對老舊設備&#xff09;。 而且Cookies&#xff08;尤其…

非隔離電源芯片WT5104

非隔離電源芯片WT5104 非隔離電源芯片 WT5104 介紹 WT5104 是一款超高效且高精度的非隔離降壓開關電源恒壓控制驅動芯片&#xff0c;在各類電源轉換場景中提供5V輔助電源供電發揮著重要作用。 一、芯片特點 高集成度&#xff1a;內部集成 800V 功率 MOSFET&#xff0c;極大減…

基于 Python 的自然語言處理系列(83):InstructGPT 原理與實現

&#x1f4cc; 論文地址&#xff1a;Training language models to follow instructions with human feedback &#x1f4bb; 參考項目&#xff1a;instructGOOSE &#x1f4f7; 模型架構圖&#xff1a; 一、引言&#xff1a;為什么需要 InstructGPT&#xff1f; 傳統的語言模型…

零基礎入門 Verilog VHDL:在線仿真與 FPGA 實戰全流程指南

摘要 本文面向零基礎讀者,全面詳解 Verilog 與 VHDL 兩大主流硬件描述語言(HDL)的核心概念、典型用法及開發流程。文章在淺顯易懂的語言下,配合多組可在線驗證的示例代碼、PlantUML 電路結構圖,讓你在 EDA Playground 上動手體驗數字電路設計與仿真,并深入了解從 HDL 編寫…

Kubernetes控制平面組件:API Server詳解(二)

云原生學習路線導航頁&#xff08;持續更新中&#xff09; kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計&#xff08;一&#xff09;Kubernetes架構原則和對象設計&#xff08;二&#xff09;Kubernetes架構原則和對象設計&#xff08;三&#xff09;Kubernetes控…

云服務器存儲空間不足導致的docker image運行失敗或Not enough space in /var/cache/apt/archives

最近遇到了兩次空間不足導致docker實例下的mongodb運行失敗的問題。 排查錯誤 首先用nettools看下mongodb端口有沒有被占用&#xff1a; sudo apt install net-tools netstat --all --program | grep 27017 原因和解決方案 系統日志文件太大 一般情況下日志文件不會很大…

爬蟲學習——下載文件和圖片、模擬登錄方式進行信息獲取

一、下載文件和圖片 Scrapy中有兩個類用于專門下載文件和圖片&#xff0c;FilesPipeline和ImagesPipeline&#xff0c;其本質就是一個專門的下載器&#xff0c;其使用的方式就是將文件或圖片的url傳給它(eg:item[“file_urls”])。使用之前需要在settings.py文件中對其進行聲明…

拒絕用電“盲人摸象”,體驗智能微斷的無縫升級

&#x1f31f; 為什么需要智能微型斷路器&#xff1f; 傳統斷路器只能被動保護電路&#xff0c;而安科瑞智能微型斷路器不僅能實時監測用電數據&#xff0c;還能遠程控制、主動預警&#xff0c;堪稱用電安全的“全能衛士”&#xff01;無論是家庭、工廠還是商業樓宇&#xff0…