神經網絡(第二課第一周)

文章目錄

    • 神經網絡(第二課第一周)
        • (一)神經網絡的內涵
        • (二)如何構建神經元層
          • 1、tensorflow如何處理數據(Tensorflow 是由 Google 開發的機器學習包。)
          • 2、詳細的一些實驗代碼,可以參考第二課第一周的相關代碼。以下是一些代碼相關的解釋:(以下都是使用Tensorflow構建的神經網絡)
          • 3、詳細的一些實驗代碼,可以參考第二課第一周的相關代碼。以下是一些代碼相關的解釋:(以下都是使用Numpy構建的神經網絡)
        • (三)使用 Keras [Sequential 模型](https://keras.io/guides/sequential_model/)和具有 sigmoid 激活的 [Dense Layer](https://keras.io/api/layers/core_layers/dense/) 來構建網絡。(以識別手寫數字為例)
          • 1、首先清楚你數據集特征值和目標值的大小
          • 2、其次要清楚你要創建什么樣的神經網絡,這個神經網絡有幾層,每一層有多少個激活值(新特征),以及激活函數是什么
          • 3、使用 Keras [Sequential 模型](https://keras.io/guides/sequential_model/)和具有 sigmoid 激活的 [Dense Layer](https://keras.io/api/layers/core_layers/dense/) 來構建上述網絡。
          • 4、定義損失函數并運行梯度下降,以使模型的權重適合訓練數據。
          • 5、使用訓練完成的模型對數據進行預測:使用 [Keras ](https://www.tensorflow.org/api_docs/python/tf/keras/Model)`predict`。要`預測`的輸入是一個數組,因此單個示例被重塑為二維。
        • (四)使用 numpy來構建網絡。(以識別手寫數字為例)
          • 1、特別需要注意的是,手動定義計算激活值的函數:
          • 2、定義三層神經網絡(這里的權重和偏差需要我們輸入給他,或者是使用tensorflow已經訓練好的權重給他)

神經網絡(第二課第一周)

(一)神經網絡的內涵

主要應用:語音、圖像、文本。

**神經網絡的內涵:**從原有的特征(特征向量)進行學習或者回歸得到新的更能預測真實值的或者是更具有代表性的特征,使用新的特征(激活向量)再次學習或者回歸,得到最終的預測概率。它的基本構建模塊是一個神經元層。

神經網絡應用于人臉識別:

(二)如何構建神經元層

在擬合新特征時一般使用的是邏輯回歸函數,也稱為激活函數,得到激活向量,作為新的特征值,這樣以此類推(稱之為向前傳播)。

1、tensorflow如何處理數據(Tensorflow 是由 Google 開發的機器學習包。)

tensorflow可以將之前創建的兩層或多層神經元按照順序串聯起來,形成一個神經網絡。示例如下:

向前傳播的代碼解釋:

2、詳細的一些實驗代碼,可以參考第二課第一周的相關代碼。以下是一些代碼相關的解釋:(以下都是使用Tensorflow構建的神經網絡)

(1)線性神經單元層

定義一個具有一個神經元或單元的層,激活函數是線性回歸。

linear_layer = tf.keras.layers.Dense(units=1, activation = 'linear', )

我們可以使用linear_layer.get_weights()或者是linear_layer.set_weights([set_w, set_b])可以設置神經元層的各參數權重。同時也可以通過將實例(矩陣)輸入給模型,模型會初始化隨機值權重。示例如下:

(2)邏輯神經單元層(一層和兩層)

TensorFlow 的 Normalization 層可以用來自動學習數據的統計特性(均值和方差),并對數據進行標準化處理,使得數據的分布更加均勻,這通常有助于機器學習模型的訓練和收斂。

擬合后會得到新的權重。有了新的權重之后我們可以對新的測試集進行歸一化,然后使用新模型進行預測。

3、詳細的一些實驗代碼,可以參考第二課第一周的相關代碼。以下是一些代碼相關的解釋:(以下都是使用Numpy構建的神經網絡)

與之前的不同之處在于,計算邏輯回歸值一個是使用的矩陣乘法,一個是使用循環相加。創建神經網絡也各有不同。

明白上面的之后,我們可以做一下第二課第一周的最后一個練習,看看掌握沒有。

(三)使用 Keras Sequential 模型和具有 sigmoid 激活的 Dense Layer 來構建網絡。(以識別手寫數字為例)
1、首先清楚你數據集特征值和目標值的大小

手寫數字數據集大小為1000X400;共計1000個樣本,每個樣本400個特征;目標是一個二分類問題,分類結果是0或者1。大小是1000x1。

2、其次要清楚你要創建什么樣的神經網絡,這個神經網絡有幾層,每一層有多少個激活值(新特征),以及激活函數是什么

這里手寫數字的這個要創建的神經網絡一共是3層,激活值分別是25、15、1;激活函數都是sigmoid函數。

3、使用 Keras Sequential 模型和具有 sigmoid 激活的 Dense Layer 來構建上述網絡。

示例代碼如下:在這里插入圖片描述

使用model.summary可以輸出你創建的神經網絡的結構。例如:
在這里插入圖片描述

創建完成神經網絡之后,我們應該已經清楚每一層的w和b它們的大小是怎樣的,例如第一層的w的大小應該是:400x25;b是25x1;第二層的w是25x15,b是15x1;以此類推。

我們可以檢查一下創建的神經網絡的權重大小是否一致,示例如下:
在這里插入圖片描述

4、定義損失函數并運行梯度下降,以使模型的權重適合訓練數據。

在這里插入圖片描述

5、使用訓練完成的模型對數據進行預測:使用 Keras predict。要預測的輸入是一個數組,因此單個示例被重塑為二維。

在這里插入圖片描述

模型的輸出被解釋為概率。在上面的第一個示例中,輸入為零。該模型預測輸入為 1 的概率幾乎為零。在第二個示例中,input 是 1。該模型預測輸入為 1 的概率接近 1。與 Logistic 回歸的情況一樣,將概率與閾值進行比較以做出最終預測。

在這里插入圖片描述

(四)使用 numpy來構建網絡。(以識別手寫數字為例)
1、特別需要注意的是,手動定義計算激活值的函數:

在這里插入圖片描述

矢量化numpy,僅用三行代碼代替循環計算。

在這里插入圖片描述

2、定義三層神經網絡(這里的權重和偏差需要我們輸入給他,或者是使用tensorflow已經訓練好的權重給他)

在這里插入圖片描述

我不太清楚這里為啥還要用一下numpy,用它的意義在哪里,tensorflow明明可以直接擬合出參數。

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

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

相關文章

CCF-GESP 等級考試 2025年6月認證C++七級真題解析

1 單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09;第1題 已知小寫字母 b 的ASCII碼為98&#xff0c;下列C代碼的輸出結果是&#xff08; &#xff09;。#include <iostream>using namespace std;int main() { char a b ^ 4; cout << a; …

【HarmonyOS】鴻蒙應用開發中常用的三方庫介紹和使用示例

【HarmonyOS】鴻蒙應用開發中常用的三方庫介紹和使用示例 截止到2025年&#xff0c;目前參考官方文檔&#xff1a;訪問 HarmonyOS三方庫中心 。梳理了以下熱門下載量和常用的三方庫。 上述庫的組合&#xff0c;可快速實現網絡請求、UI搭建、狀態管理等核心功能&#xff0c;顯著…

SpringBoot 獲取請求參數的常用注解

SpringBoot 提供了多種注解來方便地從 HTTP 請求中獲取參數以下是主要的注解及其用法&#xff1a;1. RequestParam用于獲取查詢參數(URL 參數)&#xff0c;適用于 GET 請求或 POST 表單提交。GetMapping("/user") public String getUser(RequestParam("id"…

【Linux篇章】Socket 套接字,竟讓 UDP 網絡通信如此絲滑,成為一招致勝的秘籍!

本篇文章將帶大家了解網絡通信是如何進行的&#xff08;如包括網絡字節序&#xff0c;端口號&#xff0c;協議等&#xff09; &#xff1b;再對socket套接字進行介紹&#xff1b;以及一些udp-socket相關網絡通信接口的介紹及使用&#xff1b;最后進行對基于udp的網絡通信&#…

GIF圖像格式

你可能已經知道&#xff0c;GIF 是一種光柵圖像文件格式&#xff0c;它在不損失圖像質量的前提下提供壓縮功能&#xff0c;并且支持動畫和透明度。 GIF 是“Graphics Interchange Format&#xff08;圖形交換格式&#xff09;”的縮寫。由于其良好的兼容性以及在不同應用程序和…

D3.js的力導向圖使用入門筆記

D3.js是一個用于數據可視化的JavaScript庫,廣泛應用于Web端的數據交互式圖形展示 中文文檔&#xff1a;入門 | D3 中文網 一、D3.js核心特點 1、核心思想 將數據綁定到DOM元素&#xff0c;通過數據動態生成/修改可視化圖形。 2、應用場景 交互式圖表&#xff1a;如動態條…

Zookeeper的分布式事務與原子性:深入解析與實踐指南

引言在分布式系統架構中&#xff0c;事務管理和原子性保證一直是極具挑戰性的核心問題。作為分布式協調服務的標桿&#xff0c;Apache Zookeeper提供了一套獨特而強大的機制來處理分布式環境下的原子操作。本文將深入探討Zookeeper如何實現分布式事務的原子性保證&#xff0c;分…

Lua(迭代器)

Lua 迭代器基礎概念Lua 迭代器是一種允許遍歷集合&#xff08;如數組、表&#xff09;元素的機制。迭代器通常由兩個部分組成&#xff1a;迭代函數和狀態控制變量。每次調用迭代函數會返回集合中的下一個元素。泛型 for 循環Lua 提供了泛型 for 循環來簡化迭代器的使用。語法如…

發布 VS Code 擴展的流程:以顏色主題為例

發布 VS Code 擴展的流程&#xff1a;以顏色主題為例 引言&#xff1a;您的 VS Code 擴展在市場中的旅程 Visual Studio Code (VS Code) 的強大擴展性是其廣受歡迎的核心原因之一&#xff0c;它允許開發者通過添加語言支持、調試器和各種開發工具來定制和增強其集成開發環境&…

C++ 多線程(一)

C 多線程&#xff08;一&#xff09;1.std中的thread API 介紹開啟一個線程獲取線程信息API交換兩個線程2.向線程里傳遞參數的方法第一種方式&#xff08;在創建線程的構造函數后攜帶參數&#xff09;第二種方式&#xff08;Lambda&#xff09;第三種方式&#xff08;成員函數&…

自動駕駛訓練-tub詳解

在 Donkeycar 的環境里&#xff0c;“tub” 是一個很關鍵的術語&#xff0c;它代表的是存儲訓練數據的目錄。這些數據主要來源于自動駕駛模型訓練期間收集的圖像和控制指令。 Tub 的構成 一個標準的 tub 目錄包含以下兩類文件&#xff1a; JSON 記錄文件&#xff1a;其命名格式…

CVPR多模態破題密鑰:跨模對齊,信息串供

關注gongzhonghao【CVPR頂會精選】當今數字化時代&#xff0c;多模態技術正迅速改變我們與信息互動的方式。多模態被定義為在特定語境中多種符號資源的共存與協同。這種技術通過整合不同模態的數據&#xff0c;如文本、圖像、音頻等&#xff0c;為用戶提供更豐富、更自然的交互…

小米路由器3G R3G 刷入Breed和OpenWrt 插入可共享網絡的usb隨身WiFi

小米 R3G 參數&#xff08;以下加黑加粗需要特別關注&#xff0c;灰常詳細&#xff09; 市面上有R3G和R3Gv2兩種型號, 注意區分, 后者是縮水版, 沒有USB口. 內存只有128M, Flash只有16M. 這里描述的只適用于R3G. 就是這樣 操作步驟開始&#xff0c;&#xff0c;注&#xff1a…

SpringBoot實現Serverless:手擼一個本地函數計算引擎

前言 最近突然冒出一個想法&#xff1a;能不能用SpringBoot自己實現一個類似AWS Lambda或阿里云函數計算的執行引擎&#xff1f; 說干就干&#xff0c;于是從零開始設計了一套基于SpringBoot的Serverless執行框架。 這套框架支持函數動態加載、按需執行、資源隔離&#xff0c;甚…

Java排序算法之<插入排序>

目錄 1、插入排序 2、流程介紹 3、java實現 4、性能介紹 前言 在 Java 中&#xff0c; 冒泡排序&#xff08;Bubble Sort&#xff09; 和 選擇排序&#xff08;Selection Sort&#xff09; 之后&#xff0c;下一個性能更好的排序算法通常是 插入排序&#xff08;Insertion …

《計算機網絡》實驗報告七 HTTP協議分析與測量

目 錄 1、實驗目的 2、實驗環境 3、實驗內容 4、實驗結果與分析 4.1 使用tcpdump命令抓包 4.2 HTTP字段分析 5、實驗小結 5.1 問題與解決辦法&#xff1a; 5.2 心得體會&#xff1a; 1、實驗目的 1、了解HTTP協議及其報文結構 2、了解HTTP操作過程&#xff1a;TCP三次…

面試實戰,問題十三,Redis在Java項目中的作用及使用場景詳解,怎么回答

Redis在Java項目中的作用及使用場景詳解&#xff08;面試要點&#xff09; 一、Redis的核心作用高性能緩存層 原理&#xff1a;Redis基于內存操作&#xff08;引用[2]&#xff09;&#xff0c;采用單線程模型避免線程切換開銷&#xff0c;配合IO多路復用實現高吞吐&#xff08;…

Python - 100天從新手到大師 - Day6

引言 這里主要是依托于 jackfrued 倉庫 Python-100-Days 進行學習&#xff0c;記錄自己的學習過程和心得體會。 1 文件讀寫和異常處理 實際開發中常常會遇到對數據進行持久化的場景&#xff0c;所謂持久化是指將數據從無法長久保存數據的存儲介質&#xff08;通常是內存&…

IP--MGER綜合實驗報告

一、實驗目的完成網絡設備&#xff08;路由器 R1-R5、PC1-PC4&#xff09;的 IP 地址規劃與配置&#xff0c;確保接口通信基礎正常。配置鏈路層協議及認證&#xff1a;R1 與 R5 采用 PPP 的 PAP 認證&#xff08;R5 為主認證方&#xff09;&#xff0c;R2 與 R5 采用 PPP 的 CH…

window的WSL怎么一鍵重置

之前用WSL來在windows和服務器之間傳輸數據&#xff0c;所以有很多數據緩存&#xff0c;但是現在找不到他們的路徑&#xff0c;所以想直接重置 首先使用spacesniffer看一下C盤的情況&#xff1a;看起來&#xff0c;這個WSL真的占用了很多空間&#xff0c;但是我又不知道該怎么刪…