AlexNet

概念

過擬合:根本原因是特征維度過多,模型假設過于復雜,參數過多,訓練數據過少,噪聲過多,導致擬合的函數完美的預測訓練集,但對新數據的測試集預測結果差。 過度的擬合了訓練數據,而沒有考慮到泛化能力。

代碼

model.py

import torch.nn as nn
import torchclass AlexNet(nn.Module):def __init__(self, num_classes=1000, init_weights=False):super(AlexNet, self).__init__()self.features = nn.Sequential(nn.Conv2d(3, 48, kernel_size=11, stride=4, padding=2),  # input[3, 224, 224]  output[48, 55, 55]nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),                  # output[48, 27, 27]nn.Conv2d(48, 128, kernel_size=5, padding=2),           # output[128, 27, 27]nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),                  # output[128, 13, 13]nn.Conv2d(128, 192, kernel_size=3, padding=1),          # output[192, 13, 13]nn.ReLU(inplace=True),nn.Conv2d(192, 192, kernel_size=3, padding=1),          # output[192, 13, 13]nn.ReLU(inplace=True),nn.Conv2d(192, 128, kernel_size=3, padding=1),          # output[128, 13, 13]nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2),                  # output[128, 6, 6])self.classifier = nn.Sequential(nn.Dropout(p=0.5),nn.Linear(128 * 6 * 6, 2048),nn.ReLU(inplace=True),nn.Dropout(p=0.5),nn.Linear(2048, 2048),nn.ReLU(inplace=True),nn.Linear(2048, num_classes),)if init_weights:self._initialize_weights()def forward(self, x):x = self.features(x)x = torch.flatten(x, start_dim=1)x = self.classifier(x)return xdef _initialize_weights(self):for m in self.modules():if isinstance(m, nn.Conv2d):nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')if m.bias is not None:nn.init.constant_(m.bias, 0)elif isinstance(m, nn.Linear):nn.init.normal_(m.weight, 0, 0.01)nn.init.constant_(m.bias, 0)

padding:

只能傳入兩種形式的變量,int整形,tuple類型。

比如int整形傳入1,就會在圖像的左上右下分別添上一層0。

比如tuple(1,2):1代表上下方各補一行零,2代表左右兩側各補兩列零。

或者:

?nn.ReLU(inplace=True):inplace=True增加計算量,減少內存使用

Dropout:失活。Dropout 是為了讓全連接層部分失活,所以需要dropout的全連接層前配置Dropout()

激活:每一層都要激活。激活屬于非線性操作,如果不激活,每層就是純線性變換,連續的多層和只有一層是等效的,沒有任何區別。

train.py

transform

data_transform = {"train": transforms.Compose([transforms.RandomResizedCrop(224), # 隨機裁剪成224×224的大小transforms.RandomHorizontalFlip(), # 在水平方向隨機水平翻轉transforms.ToTensor(), # 標準化處理transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]),"val": transforms.Compose([transforms.Resize((224, 224)), ?# cannot 224, must (224, 224)transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])}

?json類別文件

用flower_list來保存類別索引,在這個數據集下,圖片所在的文件夾名稱即為他們的索引。

然后通過dict方法聯合類別和序號值

再寫入json文件。

? ? # {'daisy':0, 'dandelion':1, 'roses':2, 'sunflower':3, 'tulips':4}flower_list = train_dataset.class_to_idx?cla_dict = dict((val, key) for key, val in flower_list.items())# write dict into json filejson_str = json.dumps(cla_dict, indent=4)with open('class_indices.json', 'w') as json_file:json_file.write(json_str)

損失函數

   loss_function = nn.CrossEntropyLoss()

nn.CrossEntropyLoss():針對多類別的損失函數

優化器

    optimizer = optim.Adam(net.parameters(), lr=0.0002)

優化器是Adam優化器,優化對象是網絡中所有的可訓練的參數,學習率設置的為0.0002

?net.train()

使用Dropout的方式再網絡正向傳播過程中隨機失活一部分神經元。這是再訓練過程中需要的,所以會調用net.train(),再測試過程中不需要隨機失活,所以會調用net.eval()關閉dropout()方法.

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

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

相關文章

29、卷積 - 參數 padding 的作用

在卷積過程中,Padding(填充)是一個關鍵的概念,它對于保留輸入信息和有效地處理邊緣信息至關重要。 1、Padding是什么? Padding 指的是在輸入圖像的周圍添加額外的像素值,用來以擴大輸入圖像的尺寸,這些額外填充的像素值通常設置為零,卷積操作在這個填充后的輸入圖像上…

C#基礎-結構體應用實例

目錄 定義 結構有以下特點 用法實例 定義 在 C# 中,結構體是值類型數據結構。它使得一個單一變量可以存儲各種數據類型的相關數據。struct 關鍵字用于創建結構體。 結構有以下特點 結構可帶有方法、字段、索引、屬性

2024年生成式人工智能發展預測

2024年生成式人工智能發展預測 2023.12.9版權聲明:本文為博主chszs的原創文章,未經博主允許不得轉載。 當前,生成式人工智能(Generative AI,后面簡稱 Gen AI)領域不但在持續演進,而且它正在徹…

ThinkPHP生活用品商城系統

有需要請加文章底部Q哦 可遠程調試 ThinkPHP生活用品商城系統 一 介紹 此生活用品商城系統基于ThinkPHP框架開發,數據庫mysql,前端bootstrap。系統分為用戶和管理員。(附帶配套設計文檔) 技術棧:ThinkPHPmysqlbootstrapphpstudyvscode 二 …

MYSQL主從復制配置指引

MYSQL主從復制配置指引 1.前期準備 部署完主備數據庫,初始化主備庫表結構和數據。 2. 主庫配置修改 修改主庫配置文件etc/my.cnf,新增以下配置: #服務器 id,需唯一 server-id 1 #二進制文件存放路徑 log-bin mysql-bin …

深入理解JavaScript的箭頭函數

深入理解JavaScript的箭頭函數 在ES6中,JavaScript引入了箭頭函數的概念,它提供了一種更簡潔的語法來定義匿名函數。雖然箭頭函數看起來很簡單,但它們在實際應用中有一些獨特的特性和行為。讓我們深入理解箭頭函數并學習如何正確地使用它們。…

記賬中心二開

系統預設了 這幾種 FSubSystem 為子系統 T_VC_SubSystem 卡片顯示的表 字段 FNeedRalteAccount 設置為1的話 ,需要與總賬連用系統將去查找 系統狀態控制表。 如果系統狀態 沒有配置這個子系統 將無法顯示數據 select sysStaCtr.fid from T_BD_SystemStatusCt…

MySQL:drop、delete與truncate區別

一、用法不同 1、drop(丟棄數據): drop table 表名 ,直接將表都刪除掉,在刪除表的時候使用。 2、truncate (清空數據) : truncate table 表名 ,只刪除表中的數據,再插入數據的時候自增長 id 又從 1 開始,在清空表中數…

Java LeetCode篇-深入了解二叉樹的經典解法(多種方式實現:構造二叉樹)

🔥博客主頁: 【小扳_-CSDN博客】 ?感謝大家點贊👍收藏?評論? 文章目錄 1.0 從前序與中序遍歷序列來構造二叉樹 1.1 實現從前序與中序遍歷序列來構造二叉樹思路 1.2 代碼實現從前序與中序遍歷序列來構造二叉樹 2.0 從中序與后序遍歷序…

計算目標檢測和語義分割的PR

需求描述 實際工作中,相比于mAP項目更加關心的是特定閾值下的precision和recall結果;由于本次的GT中除了目標框之外還存在多邊形標注,為此,計算IoU的方式從框與框之間變成了mask之間; 本文的代碼適用于MMDetection下的…

Java Web 學習之路(2) —— 概念、SpringBoot + MyBatis(controller+service+mapper)開發流程與過程梳理

文章目錄 前言1. 常見的一些概念1.1 POJO(Plain Ordinary Java Object 簡單Java對象)1.2 DAO和Mapper 2. Java的三層架構2.1 包的層級結構2.2 交互層 controller(用戶界面、網頁)jsp文件2.3 業務處理層 service2.4 Mapper層 3. 注…

如何同步fork項目原倉庫的更新

最簡單粗暴的方法:把原來fork的倉庫刪了重新fork(嘿嘿不過這顯然是不優雅的) 那我們該怎么同步更新呢? 如何在 Github 網頁端同步更新? 進入你自己的 fork 過來的倉庫。點擊 “Pull requests” ,如何點擊…

2024 年甘肅省職業院校技能大賽信息安全管理與評估賽項規程

2024 年甘肅省職業院校技能大賽高職學生組電子與信息大類信息安全管理與評估賽項規程 一、賽項名稱 賽項名稱:信息安全管理與評估 賽項類別:團體賽 賽項歸屬:電子與信息大類 二、競賽目的 極安云科專注技能競賽,包含網絡建設…

Python基礎——正則匹配中高階用法

1.正則使用變量匹配re.escape() re.escape() 是一個用于轉義正則表達式中特殊字符的函數。當我們需要使用變量構建正則表達式模式時,為了避免特殊字符對模式的解析產生影響,我們可以使用 re.escape() 函數來自動轉義這些特殊字符。 例如,如…

微信小程序css實現的聯系客服動畫樣式

一 、效果 二、代碼 wxml <view class"customer-service"><button class"btn" open-type"contact"></button><image class"pic" src"https://ts4.cn.mm.bing.net/th?idOIP-C.3SGSiRPuOU9uH5VNVOMPwgHaHa…

序列的Z變換(信號的頻域分析)

1. 關于Z變換 2. 等比級數求和 3. 特殊序列的Z變換 4. 因果序列/系統收斂域的特點 5. 例題

navigationBar頂部導航欄,兼容適配所有機型(附完整案例)

思路 隱藏原生樣式獲取膠囊按鈕、狀態欄相關數據以供后續計算根據不同機型計算出該機型的導航欄高度,進行適配編寫為導航欄公共組件使用組件1. 隱藏原生樣式 全局設置 "window": {"navigationStyle": "custom" }單個頁面設置 {"navigat…

免費的AI文案生成器有哪些?AI文案生成器排行榜

在當今數字化的時代&#xff0c;內容創作已成為許多行業不可或缺的一部分。為了滿足日益增長的創作需求&#xff0c;越來越多的人開始尋找能夠提高效率、同時保持原創性的解決方案。本文將專心分享一些優質的AI文案生成器。 AI文案生成器的需求 內容創作已經不再是傳統媒體和市…

高項備考葵花寶典-項目進度管理輸入、輸出、工具和技術(上,很詳細考試必過)

項目進度管理的目標是使項目按時完成。有效的進度管理是項目管理成功的關鍵之一&#xff0c;進度問題在項目生命周期內引起的沖突最多。 小型項目中&#xff0c;定義活動、排列活動順序、估算活動持續時間及制定進度模型形成進度計劃等過程的聯系非常密切&#xff0c;可以視為一…

C語言基礎

常量和常量表達式的區別 #define N 4;又是常量&#xff0c;又是常量表達式&#xff0c;其在編譯期預處理階段就會直接替換 const int M 5;只是常量&#xff0c;不是常量表達式 &#xff0c;其是存儲在一塊內存區域之內的&#xff0c;但是存儲的值不能改變 常量表達式&#xff…