홈>
다음은 단일 회선을 수행하고 형태를 출력하기 위해 작성한 코드입니다.
http://cs231n.github.io/convolutional-networks/출력 크기를 계산하려면 :
You can convince yourself that the correct formula for calculating how many neurons “fit” is given by (W−F+2P)/S+1
출력 크기 계산 공식은 다음과 같이 구현되었습니다
def output_size(w , f , stride , padding) :
return (((w - f) + (2 * padding)) / stride) + 1
문제는
output_size
입니다
컨볼 루션 결과가 1350 인 2690.5의 크기를 계산합니다.
%reset -f
import torch
import torch.nn.functional as F
import numpy as np
from PIL import Image
import torch.nn as nn
import torchvision
import torchvision.transforms as transforms
from pylab import plt
plt.style.use('seaborn')
%matplotlib inline
width = 60
height = 30
kernel_size_param = 5
stride_param = 2
padding_param = 2
img = Image.new('RGB', (width, height), color = 'red')
in_channels = 3
out_channels = 3
class ConvNet(nn.Module):
def __init__(self):
super(ConvNet, self).__init__()
self.layer1 = nn.Sequential(
nn.Conv2d(in_channels,
out_channels,
kernel_size=kernel_size_param,
stride=stride_param,
padding=padding_param))
def forward(self, x):
out = self.layer1(x)
return out
# w : input volume size
# f : receptive field size of the Conv Layer neurons
# output_size computes spatial size of output volume - spatial dimensions are (width, height)
def output_size(w , f , stride , padding) :
return (((w - f) + (2 * padding)) / stride) + 1
w = width * height * in_channels
f = kernel_size_param * kernel_size_param
print('output size :' , output_size(w , f , stride_param , padding_param))
model = ConvNet()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=.001)
img_a = np.array(img)
img_pt = torch.tensor(img_a).float()
result = model(img_pt.view(3, width , height).unsqueeze_(0))
an = result.view(30 , 15 , out_channels).data.numpy()
# print(result.shape)
# print(an.shape)
# print(np.amin(an.flatten('F')))
print(30 * 15 * out_channels)
output_size를 올바르게 구현 했습니까? 이 모델을 수정하여
Conv2d
의 결과를 수정하는 방법
output_size
의 결과와 같은 모양
?
- 답변 # 1
관련 자료
- deep learning - 컨벌루션 연산의 결과 결정
- javascript - 날짜로 배열 정렬 예기치 않은 결과
- python - Numpy Matrix insert의 예기치 않은 결과, 어떻게 작동합니까?
- php - datetime - : diff는 예기치 않은 결과를 반환합니다
- 파이썬 27 나누기 예기치 않은 결과
- reactjs - 중첩 함수가 예기치 않은 결과를 반환
- bash에서 정규 표현식을 사용하여 예기치 않은 결과
- javascript - 정의되지 않은 값을 확인할 때 예기치 않은 결과
- javascript - 작업 결과를 선택 버튼으로 표시
- regex - sed로 마지막 열을 자르면 예기치 않은 결과
- java - 서비스 계층의 단위 테스트 CRUD 메소드에서 예기치 않은 결과
- c - 왜 "+ ="가 SSE instrinsic에서 예기치 않은 결과를 줍니까?
- ios - Chameleon의 결과를 사용하여 UIViewbackgroundColor를 설정할 때 예기치 않은 nil
- region - gdi - offsetrgn () 함수에 대한 예기치 않은 결과
- c# - 단위 테스트 - 모의 객체의 람다 식에서 예기치 않은 결과
- npm - 예기치 않은 오류가 발생했습니다. "EPERM : Yarn에서 작업이 허용되지 않습니다.
- javascript - 정규식 예기치 않은 결과
- 파이썬으로 연산 결과 쓰기
- mysql - JOIN 쿼리와 함께 SUM을 사용하여 예기치 않은 SUM 결과가 발견되었습니다
- sql - Oracle months_between 함수 예기치 않은 결과
관련 질문
- tensorflow : Adam Optimizer와 함께 ReduceLROnPlateau를 사용하는 것은 의미가 없습니까?
- 카메라의 종류와 해상도가 실시간 중심 신경망의 결과에 영향을 줍니까?
- python - unhashable 유형 : add_loss 함수를 사용하려고 할 때 'DictWrapper'
- ML과 DL의 주요 차이점은 무엇입니까?
- python : Mask-RCNN 데이터 세트 형식에서 주석을 COCO 형식으로 변환
- python : 딥 러닝으로 그림에 애니메이션을 적용하려면 어떻게해야합니까?
- 전환 가능한 atrous convolution이란 무엇이며 왜 사용합니까?
- 지식 증류를 3 개 수업에 사용할 수 있나요?
- "오픈 페이스"라는 도구를 사용하는 방법
- tensorflow : Keras가 LSTM에서 차원을 떨어 뜨리는 이유는 확실하지 않습니다.
문제는 입력 이미지가 정사각형이 아니기 때문에
width
에 수식을 적용해야한다는 것입니다 그리고heigth
입력 이미지의. 또한 당신은nb_channels
를 사용해서는 안됩니다 출력에서 원하는 채널 수를 명시 적으로 정의하기 때문에 공식에서 그런 다음f=kernel_size
를 사용하십시오.f=kernel_size*kernel_size
가 아니라 공식에 설명 된대로그리고 출력 크기 :
수식 출처 : http://cs231n.github.io/convolutional-networks/