原创 PyTorch中的BatchNorm2d層

先來看看pytorch中對於類的定義: CLASS torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats

原创 NMS:Non-Maximum Suppression 非極大值抑制

Non-Maximum Suppression 非極大值抑制 NMS目的: 在檢測任務中,一個目標很有可能預測出多個bbox,我們需要剔除不適合的,只留下最好的。這就是NMS的目的。    NMS處理之後      NMS過程: 在目標檢

原创 關於auto-gradient機制與detach函數

先講一下葉子節點和非葉子節點的定義: 葉子節點(張量的is_leaf)屬性值爲True,grad_fn爲None,葉子節點有兩種情況: 第一種:由用戶自行創建的節點(即不是由運算而來): a = torch.rand(5, 5, req

原创 Python的局部變量和全局變量

num = 10 def func(): x = num + 10 print(x) def func2(): # 報錯,因爲num作爲左值被認爲是局部變量了,不能在賦值之前使用 # num =

原创 Module.named_parameters()、Module.named_children()與Module.named_modules()的區別

在代碼裏面輸出一下子: import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super().__init_

原创 Error(s) in loading state_dict for DataParallel

關於PyTorch模型保存與導入的一些注意點: 1.沒有使用並行計算: import torch.nn as nn class Net(nn.Module): def __init__(self): supe

原创 將兩個list對應值相乘後得到的list值再相加

from functools import reduce import torch a = torch.tensor([1, 4]) b = torch.tensor([4, 7]) list1 = [a, b] c = torc

原创 M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network

名稱:M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network 文獻類型:目標檢測 年份:2018 要解決的問題:提出了更快更好的網

原创 利用PyTorch自定義數據集實現貓狗分類

看了許多關於PyTorch的入門文章,大抵是從torchvision.datasets中自帶的數據集進行訓練,導致很難把PyTorch運用於自己的數據集上,真正地靈活運用PyTorch。 這裏我採用從Kaggle上下載的貓狗數據集,利用自

原创 基於棧的十以內進制的任意轉換

題目 設計算法把一個十進制整數轉換爲二至九進制之間的任意進制的數輸出 解題 進制轉換使用數據結構“棧”來實現是適合的,最先得出的餘數反而要是位數最小的(即最後輸出),符合棧的特點。 代碼如下: // Stack.h 棧的實現 #incl

原创 入棧順序一定,出棧的合法序列種類個數

題目 設有一個數列的輸入順序爲123456,若採用棧結構,並以A和D分別表示入棧和出棧操作,試問通過進棧和出棧操作的合法序列有多少種? 解題 三種辦法,結果是132種序列。 1. 列舉法 不是直接一個個去列,而是找技巧。先列數列元素個數爲

原创 基於棧的表達式中多種括號匹配算法

題目 假設表達式中允許包含3種括號:圓括號、方括號和大括號。設計一個算法採用順序棧判斷表達式中的括號是否正確匹配。 解題 基本思路如下:實例化一個字符棧,維持一個bool變量flag,初始化爲true。然後遍歷整個表達式: 如果是三種

原创 利用PyTorch實現VGG16

import torch import torch.nn as nn import torch.nn.functional as F class VGG16(nn.Module): def __init_