>  기사  >  백엔드 개발  >  Python 클래스 매개변수 정의 및 데이터 확장 방법 unsqueeze/expand

Python 클래스 매개변수 정의 및 데이터 확장 방법 unsqueeze/expand

WBOY
WBOY앞으로
2022-08-24 13:32:402418검색

【관련 추천: Python3 동영상 튜토리얼

클래스의 매개변수 정의

conda 환경을 ai로 설정, conda activate aiconda activate ai

这个文件的由来:

由于在yolov1的pytorch实现的损失函数中,看到继承了nn.Module,并且其中两个参数不像c++那里指定类型,那么他们的类型是哪里来的

这里就是在探索这样一件事

操作逻辑:

  • 先在类中定义了构造函数以及一个自定义函数;
  • 构造函数定义了属性S、B,自定义函数引入两个参数,对两个参数进行调用
    • 这里就说明参数的结构是怎么样的,取决于参数被调用了什么东西,比如这里调用了N = box1.size(0) M = box2.size(0)
    • 이 파일의 출처 :
  • yolov1의 pytorch에 의해 구현된 손실 함수에서 nn.Module이 상속되고 매개변수 중 두 개가 C++에서 지정된 유형을 갖지 않는 것을 볼 수 있습니다. 그러면 해당 유형은 어디에서 왔습니까?

작업 논리:

  • 먼저 클래스에서 생성자와 사용자 정의 함수를 정의합니다.
  • 생성자는 속성 S 및 B를 정의합니다. 사용자 정의 함수는 두 개의 매개변수를 도입하고 두 개의 매개변수를 호출합니다.
    • 여기에는 매개변수가 호출되는 항목에 따른 매개변수의 구조가 나와 있습니다. 예를 들어, N = 여기에서는 box1.size(0) M이 호출됩니다. = box2.size(0)는 이것이 행렬과 같은 것임을 보여주며, box1의 해당 정의는 `torch.rand(10,4)

      import torch
      import torch.nn as nn
      import torch.nn.functional as F
      from torch.autograd import Variable
      
      #探究属性S,B是如何产生的,以及box1、box2是如何产生的、如何调用
      class yoloLoss(nn.Module):
          def __init__(self,S,B):
              self.S=S
              self.B=B
          def compute_iot(self,box1,box2):
              N = box1.size(0)  #调用方式就表示了变量是什么类型,这里是一个张量,其中每个元素是一个tensor,所以是N*4的张量
              M = box2.size(0)
              print(M,N)
      
      yoloLoss1 =yoloLoss(10, 11)
      yoloLoss1.compute_iot(torch.rand(10,4),torch.rand(11,4))

      데이터 확장탐색 unsqueeze와 Expand 사용법 】

위 내용은 Python 클래스 매개변수 정의 및 데이터 확장 방법 unsqueeze/expand의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제