묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
Prepare dataset 부분에서 코드 오류가 납니다 ㅠㅠ
첨부해주신 코드를 복사 붙여넣기 했는데, 오류가 나네요.. ㅠㅠ오류명은 : ---> 21 class CustomDataset(Dataset): 22 def init(self, file_list, transform=None): 23 self.file_list = file_listTypeError: str() argument 'encoding' must be str, not tupledataset_train = CustomDataset(train_list, transform=transforms_for_train) dataset_valid = CustomDataset(val_list, transform=transforms_for_val_test) dataset_test = CustomDataset(test_list, transform=transforms_for_val_test)CustomDataset 클래스를 통해, train, valid, test를 만들어주는 과정에서, str() arguments를 받아야 한다는 것 같은데.. 왜 오류가 나는지 잘 모르겠습니다.from torchvision import transforms input_size = 224 transforms_for_train = transforms.Compose([ transforms.RandomResizedCrop(input_size, scale=(0.5, 1.0)), transforms.RandomHorizontalFlip(), transforms.RandomVerticalFlip(), transforms.RandomRotation(10), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) transforms_for_val_test = transforms.Compose([ transforms.Resize(input_size), transforms.CenterCrop(input_size), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) #class Dataset class CustomDataset(Dataset): def __init__(self, file_list, transform=None): self.file_list = file_list self.transform = transform def __len__(self): return len(self.file_list) def __getitem__(self, idx): img_path = self.file_list[idx] if img_path.split('/')[-1][-3:] == 'jpg': img = Image.open(img_path) if self.transform is not None: img_transform = self.transform(img) label = img_path.split('/')[-1].split('.')[0] if label == 'dog': label = 1 elif label == 'cat': label = 0 return img_transform, label dataset_train = CustomDataset(train_list, transform=transforms_for_train) dataset_valid = CustomDataset(val_list, transform=transforms_for_val_test) dataset_test = CustomDataset(test_list, transform=transforms_for_val_test) # from torch.utils.data import DataLoader # 데이터 로더 클래스 # # train_batches = DataLoader(dataset=dataset_train, batch_size=8, shuffle=True) # val_batches = DataLoader(dataset=dataset_valid, batch_size=8, shuffle=False) # test_batches = DataLoader(dataset=dataset_test, batch_size=8, shuffle=False)강의 내용과 같이 len(train_list), len(val_list)가 잘 출력이 됨을 볼 수 있고, Reference 항목에서 특정 img의 사이즈를 출력해볼 떄도, (500, 374) 라고 잘 출력됨을 알 수 있었습니다.train할 데이터와 test 데이터는 강의 중에 배운 os 명령어 및 with zip 명령어를 사용해서<오류 화면 입니다.>전체 작성한 코드 첨부드립니다.import zipfile Dataset = 'dogs-vs-cats-redux-kernels-edition' with zipfile.ZipFile('../BecomeProfessional/' + Dataset + ".zip", "r") as z: z.extractall(".")import pandas as pd import numpy as np import warnings warnings.filterwarnings('ignore') from PIL import Image import torch import torch.nn as nn from torch.utils.data import DataLoader, Subset from torchvision import datasets, transforms from sklearn.model_selection import train_test_split from copy import deepcopy import matplotlib.pyplot as plt import os, shutilimport random import os #device 설정 device = 'cuda' if torch.cuda.is_available() else 'cpu' print(device) seed = 42 # seed값 설정 random.seed(seed) # 파이썬 난수 생성기 os.environ['PYTHONHASHSEED'] = str(seed) # 해시 시크릿값 고정 np.random.seed(seed) # 넘파이 난수 생성기 torch.manual_seed(seed) # 파이토치 CPU 난수 생성기 torch.backends.cudnn.deterministic = True # 확정적 연산 사용 설정 torch.backends.cudnn.benchmark = False # 벤치마크 기능 사용 해제 torch.backends.cudnn.enabled = False # cudnn 기능 사용 해제 if device == 'cuda': torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed)original_data_path = './Dog_Cat/' os.makedirs('dogsvscats', exist_ok=True) import zipfile with zipfile.ZipFile(os.path.join(original_data_path, 'train.zip')) as train_zip: train_zip.extractall('./Dog_Cat/dogsvscats') with zipfile.ZipFile(os.path.join(original_data_path, 'test.zip')) as test_zip: test_zip.extractall('./Dog_Cat/dogsvscats')import glob print(glob.glob('./Dog_Cat/dogsvscats/train/*'))출력: ./Dog_Cat/dogsvscats/train\\cat.11346.jpg', './Dog_Cat/dogsvscats/train\\cat.11347.jpg', './Dog_Cat/dogsvscats/train\\cat.11348.jpg', './Dog_Cat/dogsvscats/train\\cat.11349.jpg', ' .... (엄청 많이 출력됩니다)train_dir = './Dog_Cat/dogsvscats/train' test_dir = './Dog_Cat/dogsvscats/test' all_train_files = glob.glob(os.path.join(train_dir, '*.jpg')) test_list = glob.glob(os.path.join(test_dir, '*.jpg')) train_labels = [path.split('/')[-1].split('.')[0] for path in all_train_files] train_list, val_list = train_test_split(all_train_files, test_size=0.1, stratify=train_labels, random_state=seed) print(len(train_list), len(val_list))출력: 22500 2500train_list[0]출력: './Dog_Cat/dogsvscats/train\\cat.4814.jpg'img = Image.open('./Dog_Cat/dogsvscats/train/cat.4814.jpg') img.size출력: (500, 374)import IPython image1 = IPython.display.Image(filename='./Dog_Cat/dogsvscats/train/cat.4814.jpg') display(image1)from torchvision import transforms input_size = 224 transforms_for_train = transforms.Compose([ transforms.RandomResizedCrop(input_size, scale=(0.5, 1.0)), transforms.RandomHorizontalFlip(), transforms.RandomVerticalFlip(), transforms.RandomRotation(10), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) transforms_for_val_test = transforms.Compose([ transforms.Resize(input_size), transforms.CenterCrop(input_size), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) #class Dataset class CustomDataset(Dataset): def __init__(self, file_list, transform=None): self.file_list = file_list self.transform = transform def __len__(self): return len(self.file_list) def __getitem__(self, idx): img_path = self.file_list[idx] if img_path.split('/')[-1][-3:] == 'jpg': img = Image.open(img_path) if self.transform is not None: img_transform = self.transform(img) label = img_path.split('/')[-1].split('.')[0] if label == 'dog': label = 1 elif label == 'cat': label = 0 return img_transform, label dataset_train = CustomDataset(train_list, transform=transforms_for_train) dataset_valid = CustomDataset(val_list, transform=transforms_for_val_test) dataset_test = CustomDataset(test_list, transform=transforms_for_val_test)오류 발생
-
해결됨Google 공인! 텐서플로(TensorFlow) 개발자 자격증 취득
실습자료 내용 문의입니다.
"VGG16 모델을 활용한 전이학습" 강의의 실습자료에서compile 부분 설명의 전처리 단계에서 원핫인코딩이 되어있다고 설명문구가 있는데, 원핫인코딩이 된 게 맞나요?바로 밑의 complie loss="sparse_categorical_crossentropy"는 원핫인코딩이 안되어 있을 때 사용하는 옵션으로 배워서 여쭤봅니다!
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
optimizer.zero_grad()에 관한 질문입니다
"파이토치로 딥러닝 구현 패턴 이해하기" 강의 7:56 부분에서,optimizer.zero_grad()는 기존의 연산을 끊어주는 역할을 하고, 이는 강의에서 전에 작성했던 W.detach_().requires_grad_(True) b.detach_().requires_grad_(True)이 코드와 같은 역할을 한다고 설명해 주셨습니다. 설명을 듣고, pytorch 공식 문서 등에서 관련된 내용들을 찾아보니"detach는 계산된 값과 동일한 저장 공간을 사용하지만, 계산 기록은 없는 tensor를 반환하여 tensor를 과거 계산 기록으로부터 떼어내는 역할을 한다"라는 설명을 찾을 수 있었습니다. 그렇다면, 모델 파라미터의 미분값을 0으로 초기화하는 optimizer.zero_grad()는 W.detach_().requires_grad_(True)이 코드와 엄밀히 따지자면 조금 다른 동작을 하는 것으로 이해하였는데요,'기존의 연산을 끊어준다' 라는 측면에서 조금 동작에 차이가 있다고 보는 것이 맞는지 설명 듣고 싶습니다!감사합니다
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mm_mask_rcnn_train_balloon에서 좌표에 0.5를 더하는 이유?
mm_mask_rcnn_train_balloon.ipynb 실습 convert_balloon_to_coco() 함수 구현에서 poly = [(x + 0.5, y + 0.5) for x, y in zip(px, py)]위와 같이 원래 좌표에 0.5를 더하는 이유를 알고 싶습니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Soft max Class score 질문입니다!
오른쪽 처럼 car: 0.8 이라고 되어있는데 이는 vgg/resnet 학습시에 label 데이터와의 대조를 통하여 산출한 값인가요?현업에서쓰는 label 데이터는 주로 어떤걸 쓰는지 궁금합니다!
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Cofidence threshhold 질문입니다!.
오른쪽 0.9 흰색 박스 안에 차의 Confidence threshold를 0.9라는 값이 나오는 것은 "유사도 90%미만의 이미지는 적용 하지 않는다."의 의미로 해석을 했는데, 이 때도 Object Localization을 통해 바운더리 박스를 찾고 난 뒤 그 이미지와의 유사도가 90%이하면 버린다. 라고 해석했는데 맞나요?
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
회귀 문제 해결 시 딥러닝 vs 머신러닝 질문드립니다.
안녕하세요. 권철민 선생님.저는 회사에서 업무 적용을 위해 머신러닝과 딥러닝을 공부하고 있습니다.그동안 딥러닝은 매우 방대한 데이터와 복잡한 차원 연산이 필요한 이미지 처리 등에 활용되고 머신러닝은 비교적 정형화된 데이터의 회귀, 분류 등에 활용되는 것으로 알고 있었습니다.근데 최근 상사로부터 딥러닝을 이용해 데이터를 회귀 분석하라고 요구 받았습니다. 머신러닝과 딥러닝을 혼동하셔서 그렇게 말씀하신 건지는 모르겠습니다만..이에 어떤 경우에는 딥러닝으로, 또는 머신러닝으로 회귀 문제를 푸는 것이 유리한지 두 방법의 장단점을 알고 싶습니다.그리고 만약 딥러닝으로 회귀 문제를 푸는 것이 유리한 경우가 있다면.. 본 강좌에는 CNN 중심으로 설명하고 있는데 타 강의를 참고해야 할까요? ㅠㅠ
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
필터 관련문의
강의 잘 듣고 있습니다.지금 CIFAR 데이터셋 CNN구현 실습 부분을 보고 있으면서 궁금한점 이 생겨 문의드립니다. 학습시 Conv2D, Activation, Maxpooling2D 같은 필터 개수는 어떻게 정의하는건가요 ? param이 어떻게 변하는지는 설명을 잘 해주셔서 이해했는데, Conv2D 등을 통해 필터시 어떤 기준으로 여러번 사용하는지가 이해가 안되내요. 감사합니다.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
pytorch custom layer
안녕하세요! pytorch library에 대한 질문이 있습니다.저희는 pytorch로 모델을 구현할 때, nn.Module 오버라이딩하여 사전에 존재하는 모듈을 사용하여 모델을 구축합니다. 예를들어 lstm 같은 경우, 파이토치에 이미 lstm block이 구현되어있어서 그대로 가져다 씁니다. 만약 제가 직접 파이토치 상에서 layer를 직접 구축하고 싶을 때, 어떻게 구축해야하는지 궁금합니다. 파이토치 상에서 구현되지 않은 알고리즘을 파이토치로 구현하고 싶습니다.혹시 참고할 만한 레퍼런스가 있다면 뭐든 너무 감사드립니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
실습환경
오래 전에 공부하려고 결제했다가 이제서야 공부하려는데, 그때 구글 gpu 크레딧을 다 사용해버렸는데 혹시 그냥 주피터에서도 실습할 수 있나요?
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
Pooling layer 사용하는 이유가 궁금합니다. (CNN 이론 부분이에요)
먼저 질문을 드린 이유는 CNN의 이미지 특징을 추출하는 과정에서 쓰이는, Convolution layer와 Pooling layer의 기능이 동일하고, Padding을 쓰는 이유에 대한 궁금증이 들었기 때문입니다.CNN 이론 강의 내용에서, CNN의 구조는 크게 (1)이미지 특징을 추출하는 부분과 (2)클래스를 분류하는 부분이 있다고 배웠습니다.(2)의 경우는 특징을 추출하고 난 뒤에 softmax나 , logsoftmax activation function을 통해, 분류하는 것이기 때문에, CNN 앞 시간에서 배웠던 1차원 형태의 데이터 처리하는 방법과 유사하다고 하셨습니다.Convolution layer는 filter(kenel)이 창문 닦듯이(알고리즘으로 보면 슬라이딩 윈도우 느낌으로) 슥슥 움직이면서 Feature Map(특성 맵)을 추출하는데, 이 부분은 칼라이미지나 흑백이미지의 경우 기존의 1차원 형태의 데이터로 바로 만들어주는 과정에 비해, 공간적/지역적 정보를 유지할 수 있으며, 특정 부분을 추출할 수 있기 때문에 해당 이미지의 특징을 확인할 수 있는 장점을 가집니다. 하지만 영상에서 설명하셨듯이, filter가 적용되면서 중복되는 부분이 발생해서 계산양이 많아지고, 무엇보다 5x5이미지의 경우 3x3필터를 사용했을 때 3x3 크기가 되기 때문에 데이터가 소실되는 문제가 발생한다고 하셨습니다. 따라서, 이를 해결하기 위해, Zero padding을 적용하여, 이미지 가장자리를 0으로 감싸줌으로써 3x3필터를 사용하더라도, 5x5의 원본 이미지의 크기가 3x3 크기가 아닌 5x5로 보존되기 때문에, 데이터 소실을 방지할 수 있다고 들었습니다.Q1:그래서 여기 까지 들었을 때, 특징을 잘 추출하기 위해 커널의 크기를 작게 했을 때, 원본 크기에 비해, output이 작아질 수도 있으니까 zero padding을 쓰는 것이 중요하구나... 하는 생각과 zero padding을 통해 원본 크기를 보존하는 것이 중요하구나 라고 생각했습니다. 혹시 맞을 까요? 그리고 나서, Pooling 설명을 들었는데, Pooling layer는 convolution layer에서 얻어진 output에서 특징을 뽑아 내는 과정이기 때문에, 얻어진 feature map의 사이즈가 줄어드는 현상이 발생하는데, 특징을 뽑아내는 것도 이해는 가지만, 데이터가 소실되는 문제가 발생할 수 있지 않을까...? 하는 생각이 들었습니다.CNN의 구조가 Convolution layer와 pooling layer가 같이 순서쌍으로 동작하기 때문에, 각각의 기능에 대해서 특징을 추출하는 과정이다는 부분에는 이해는 갔지만, padding의 기능때문에, 특징 맵의 크기를 보존하는 것이 원래 input가 비슷하게 보존하는 것이 좋은건지, 줄여나가는 건지 헷갈립니다.
-
해결됨최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
비전 트랜스포머 - 최신 모델 강의에서 positional embedding
안녕하세요!비전 트랜스포머 - 최신 모델 강의에서예시로 설명해주신 R^65*128에 Epos 인 positional embedding을 더하는데도 R^65*128의 크기에는 변화가 없나요?? 이전에 클래스 정보를 더했을 때는 64에서 +1해서 65가 되었는데 positional embedding을 했을 때는 값에 변화가 없나 궁금해서 질문드립니다.
-
미해결최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
비전 트랜스포머 - 최신 모델' 강의에서 B*N*K 와 1*K*D 를 연산
안녕하세요! 항상 좋은 강의 해주셔서 감사드립니다.'비전 트랜스포머 - 최신 모델' 강의에서 B*N*K 와 1*K*D 를 연산하면 B*N*D 가 된다고 하셨는데 어떤 연산을 통해서 어떻게 B*N*D로 변환되는지 궁금합니다. 그냥 B*N*K에서 단순히 K의 형태를 바꾸는 연산만 하면 안되는 건가요?? 어떤 원리로 연산을 통해 변환이 되는 건지 궁금해서 질문 드립니다.그리고 연산에서 R^N*D 에서 기호 R은 무엇을 뜻하는지 궁금합니다.감사합니다.
-
미해결최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
'어텐션 기법 - 키, 쿼리, 밸류는 무엇인가?' 강의에서 (QK^T)
안녕하세요!'어텐션 기법 - 키, 쿼리, 밸류는 무엇인가?' 강의에서 (QK^T)쿼리와 키 transpose한 것이 어떻게 쿼리와 키의 유사도를 나타내는지 잘 이해가 가지 않습니다.
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
10_ADVANCE_EXAMPLE-에서 MNIST 함수 작성할 때 index_error가 나타납니다 ㅠㅠ
항상 강의들으면서, 따라치면서, 여러번 반복해서 익히려고 하고 있습니다. 지금까지 별 문제 없이 쏙쏙 이해가 잘 가서, 지금까지 질문을 드리지 않았는데요.. 함수를 작성하는 부분에서 자꾸 인덱스 에러가 나타나서, 제가 어느 부분을 잘못 쓴 건지 모르겠습니다. 선생님께서 작성하신 코드를 그대로 복사해서 넣었는데도 index error가 호출되어서 왜 그런지 모르겠습니다...
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
Tensorflow c++과 subclassing에 관해 질문드립니다.
선생님 안녕하세요! 새해 복 많이 받으세요!!올려주신 강의 정말 감사드립니다. 저는 선생님 강의를 파이썬 머신러닝 부터 컴퓨터 비전, CNN을 통해 혼자 딥러닝을 공부하고 있는 전자공학 전공 학생입니다.앞으로의 진로와 공부 방향에 관해 몇가지 질문을 드리고 싶습니다.현재 선배들 중 제조업(반도체,자동차, 배터리)에 종사하는 선배 중 딥러닝쪽 업무를 하는 선배들로 부터 요즘은 모델링을 파이썬으로 하지만 C++을 이용해서 많이 진행한다고 하고, Tensorflow를 더 잘 사용하기 위해서는 subclassing을 통한 모델을 만들 수 있어야 한다고 들었습니다. (https://www.tensorflow.org/guide/keras/custom_layers_and_models)하지만 인터넷으로 검색을 해봐도 Tensorflow와 C++을 연동해서 사용하는 경우에 대한 정보를 얻기 힘들고 subclassing 또한 정보를 얻기 어려웠습니다. 혹시 관련하여 알고계신 정보가 있다면 공부방법과 강의계획이 있으신지 여쭤봐도 될까요?
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
tensorflow api 질문
안녕하세요 교수님. 최근에 텐써플로우로 작업을 해야할 필요가 있어서 텐서플로우 도커를 사용하여 작업을 진행하고 있습니다. 작업을 함에 있어서 최근에 api가 이상하게 바뀐거같아서 여쭈어봅니다. 코렙에서 또한 해당 에러가 있는거 같아서 혹시 해결을 하셨는지 궁금해서 여쭈어봅니다. 현재 쓰고 있는 버전은 2.11.0입니다 <바뀐 api><기존 api>작동은 하지만 하위 함수들을 자동적으로 호출을 못해오는 현상
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
실습코드
제2강에 있는 실습코드는 어떻게 다운로드 받는건가요??호형님 아이디 비번이 있는건가요?? 제가 찾아봐도 잘 모르겟네요.
-
미해결모두를 위한 딥러닝 - 기본적인 머신러닝과 딥러닝 강좌
tf.placeholder 에러
placeholder란 method가 없다고 하는데 업그레이드하면서 없어진건가요? 없어졌다면 뭐로 대체해서 사용하면 될까요?
-
해결됨최신 딥러닝 기술과 객체인식
Yolov2 NIN에 대한 질문
안녕하세요 강의 잘 보고 있습니다Yolov2에서 Darknet-19 백본을 사용하는데, 여기서 NIN 기술이 적용되었다고 나오는데논문이나 코드에서 이 부분에 대한 언급을 알 수 있을까요?또한 해당 기술이, 보통 채널은 변경하는데 아웃풋 사이즈를 안바꾸는 1x1 컨벌루션과 다른건가요?감사합니다