for문과 같은 loop문 없이 tensor을 특정 조건으로 훑고 선택 및 변경하기
딥러닝 꿀팁

for문과 같은 loop문 없이 tensor을 특정 조건으로 훑고 선택 및 변경하기

by handzoo 2023. 7. 10.

Boolean Indexing의 개념은 아래를 보자.

 

[Boolean indexing] for문과 같은 loop 없이 tensor에서 특정 조건에 맞는 요소만 추출

Boolean indexing이 뭔지는 모르겠지만 왜 필요할까? 여성들의 키가 이처럼 나타났을 때 모델은 170 이상...

blog.naver.com

나의 Usage

chunk 단위로 에너지를 계산하고, 이를 threshold와 비교하기.
threshold를 못넘으면 그냥 0에 가깝지만 0이 아닌 0.001을,
threshold 이상의 것은 살리는 그런 작은 task

for문을 사용하지 않고 boolean indexing을 통해서 구할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
import torch
chunk = torch.randn(256)# [channel, chunk_len, num_chunk]
chunk_energy = (chunk ** 2).sum((01))
print(chunk_energy)
print(chunk_energy < 8)
chunk_energy[chunk_energy<8]=0.001
print(chunk_energy)
 
 
>> tensor([349387])
>> tensor([ True,  TrueFalse,  TrueFalse,  True])
>> tensor([1.0000e-031.0000e-0391.0000e-0381.0000e-03])
cs

 

딥러닝에서는 되도록 for문을 사용하지 않게 하여 병렬 처리가 가능할 수 있도록 구현해주는 것이 좋다.


TOP

Designed by 티스토리