일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- ML
- computervision
- 3d
- Torch
- Front
- pytorch
- algorithm
- nlp
- nerf
- web
- clean code
- classification
- SSL
- 자료구조
- Depth estimation
- 알고리즘
- Vision
- PRML
- 딥러닝
- FineGrained
- dl
- cs
- Python
- Meta Learning
- FGVC
- 머신러닝
- math
- CV
- GAN
- REACT
- Today
- Total
목록Python (35)
KalelPark's LAB

매번 까먹어서, 다시 다듬어보고자 한다. torch.gather란? 공식문서에 따르면 차원에 해 정해진 축에 따라 값을 모읍니다. import torch t = torch.tensor([[1, 2], [3, 4]]) torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]])) 즉, 차원에 따라 값을 재배치한다고 이해하면 됩니다. * 코드로 한번 더 이해해보도록 하겠습니다. out[i][j][k] = input[index[i][j][k]][j][k] out[i][j][k] = input[i][index[j][k]][k] out[i][j][k] = input[i][j][index[k]] // 위의 값처럼 indexing이 처리되는 것을 알 수 있습니다. Example> imp..

Comparison, Generator Comparison을 사용하면, 타입을 간결하게 이터레이션하면서 원소로부터 파생되는 데이터 구조를 생성할 수 있습니다. Comparison은 Generator로 확장하는 것이 가능합니다. Generator는 성능을 향상시키고, 메모리 사용량을 줄이고, 코드의 가독성을 향상시킬 수 있습니다. list comparision을 사용하는 경우, map과 filter를 사용하는 대신에, list에서 바로 생성하는 것이 좋습니다. alt = map(lambda x : x ** 2, a) # don't use even_square = [x ** 2 for x in a if x % 2 == 0] # using list comparison print(even_sqaure) Sequ..

Dictionary - 일반적으로, Dictionary의 원소 삽입 순서와 iteration 순서는 일치하지 않는다. 이러한 일이 발생하는 이유는, Dictionary의 구현이 내장 hash와 난수 씨앗값(seed)을 사용하는 해시 테이블 알고리즘이기 때문이다. - 만약 dictionary를 순서에 의존하고 싶다면, 아래와 같은 명령어를 사용하면 됩니다. baby_names = { "cat" : "kitten", "dog" : "puppy" } print(baby_names.keys()) print(baby_names.values()) print(baby_names.items()) print(baby_names.popitem()) 기존 방법에서는, dictionary에서 값을 불러올 때, 순서대로 불러오..

Packing & Unpacking Packing : 인자로 받은 여러개의 값을 하나의 객체로 합쳐서 받을 수 있도록 합니다. tuple은 *를 사용하여, 나타냅니다. 반면에 **의 경우, dictionary로써 사용됩니다. def func(*args): print(args) print(type(args)) // func(1, 2, 3, 4, 5, 6, 'a', 'b') // result // (1, 2, 3, 4, 5, 6, 'a', 'b') // def kwpacking(**kwargs): print(kwargs) print(type(kwargs) // kwpacking(a=1, b=2, c=3) // result // {'a': 1, 'b': 2, 'c': 3} // Unpacking : 함수를 호..

PEP(Python Enhancement Proposal) 8이란? - Python 코드를 어떤 형식으로 작성할지 알려주는 가이드라인이다. * 파이썬 커뮤니티에서 자주 활용되는 방안이기에, 참조하시기 바랍니다. https://peps.python.org/pep-0008/ PEP 8 – Style Guide for Python Code | peps.python.org PEP 8 – Style Guide for Python Code Author: Guido van Rossum , Barry Warsaw , Nick Coghlan Status: Active Type: Process Created: 05-Jul-2001 Post-History: 05-Jul-2001, 01-Aug-2013 Table of Con..

Split란? Split의 경우 데이터당 최대 자료구 N개를 가지게 하는 방법입니다. 만약 원하고자 하는 split_size로 나누고자 하지만, 정확한 size로 나누는 것이 불가능하다면, 마지막 size는 작습니다. Chunk란? chunks의 경우 데이터를 n개로 나누는 방법입니다. chunk의 경우 n개의 그룹을 만드는 것이다. * 쉽게 이해하고자 한다면, chunk는 n개의 그룹을 만드는 것이고, split의 경우 n개로 구성된 그룹을 만드는 것이다.

*args, **kwargs란? Python에서의 *, **는 주소값을 저장하는 의미가 아닙니다. 여러 개의 인수를 받을 때, 키워드 인수를 받을 때 사용하는 표시입니다. *args *args는 *arguments의 줄임말입니다. 즉, 다른 단어를 작성해도 상관없습니다. 이 지시어는 여러 개(복수개)의 인자를 함수로 받고자 할 때 쓰입니다. *의 의미는 메모리 주소를 찾아서 값을 읽어준다는 의미이다. **kwargs kwargs는 keyword argument의 줄임말로 키워드를 제공합니다. **kwargs는 (키워드 = 특정 값) 형태로 함수를 호출할 수 있습니다. 즉, 딕셔너리 형태로 함수 내부로 전달됩니다. class nerf: def __init__(self, purple = 5, role = 5..

Data Sampler는 주어진 Data Pool과 batchsize에서 어떻게 batch를 형성할지 결정해주며, Dataset의 순서를 결정하는 역할을 하기도 합니다. DataLoader가 초기화될 때, 데이터셋의 샘플들의 Sequence Order를 작성한다. 만들어진 Sequence를 통하여, 데이터셋에서 데이터들이 주어진 Batchsize만큼 batch의 형태로 나오게 됩니다. Sampler에는 여러가지가 존재합니다. - Random Sampler : 랜덤, replacement 여부 선택 가능, 개수 선택 가능 - SubsetRandom Sampler : 랜덤 리스트, 위와 두 조건 불가능 - Sequential Sampler : 항상 같은 순서 - Custom Sampler (Weight) :..