[python][자료구조] 벡터화 | Vectorization

벡터화 | Vectorization

@벡터화(Vectorization)

-쉽게 말해, 코드에서 for문을 없애는 일종의 예술

 

 

 

실제 딥러닝을 할 때 큰 데이터 세트를 학습시킬 때가 많음

따라서 코드가 빠르게 실행되는 게 중요함

그렇지 않으면 큰 데이터 세트를 학습시킬 때 코드 실행 시간이 길어지고, 결과를 내기까지 오래 기다려야 함

딥러닝 시대에서 벡터화할 수 있는 능력은 중요한 기술이 되었음

 

 

 

벡터화 되지 않은 구현일 때에는 w^T*x를 계산하기 위해

 

 

위와 같이 구현해야 했음

->느림

 

 

그에 반해, 벡터화된 구현은 w^T*x를 직접 계산함

파이썬이나 Numpy에서 사용하는 명령어는 np.dot(w,x)

 

 

위 방법(벡터화된 구현)이 훨씬 빠름

 

 

 

실습코드)

import numpy as np
import time  # Time how long the operation takes

# Create million-dimensional array of random numbers
a = np.random.rand(1000000)
b = np.random.rand(1000000)

tic = time.time()  # Set current time
c = np.dot(a, b)
toc = time.time()

print(c)
# Expressed in milliseconds
print("Vectorized version: " + str(1000 * (toc - tic)) + "ms")

c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
toc = time.time()

print(c)
# Non-Vectorized version
print("for loop: " + str(1000*(toc-tic)) + "ms")

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

벡터화된 버전은 0.9밀리초가 걸렸지만 벡터화되지 않은 버전은 576밀리초가 걸린 것을 볼 수 있음

->코드를 벡터화하면 딥러닝 알고리즘 구현 시 결과를 훨씬 빨리 얻을 수 있음

 

 

 

@SIMD(Single Instruction Multiple Data)

-병렬 프로세서의 한 종류

-하나의 명령어로 여러 개의 값을 동시에 계산하는 방식

-벡터화 연산을 가능케 함

->for문으로 하나의 값을 연산하는 것보다 벡터로 만들어 한번에 연산하는 게 더 효율적

 

 

 

GPU는 SIMD 계산을 엄청 잘 하지만 CPU도 그렇게 나쁘진 않음

 

될 수 있는 한 for문을 쓰지 않아야 함

 

 

 

 

참고)

https://youtu.be/qsIrQi0fzbY

 

 

[출처] https://damio.tistory.com/12

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
64 [python][자료구조] "pdf 취소선 검출" How to identify strike-out text from PDF files using Python 졸리운_곰 2024.07.18 544
63 [python][자료구조] 오픈 소스 Python PDF 파서 라이브러리 file 졸리운_곰 2024.07.16 444
» [python][자료구조] 벡터화 | Vectorization file 졸리운_곰 2023.12.21 330
61 [python][자료구조] Python의 Loop? NO! , Python의 Vectorization? OK!!! file 졸리운_곰 2023.12.21 473
60 [python][자료구조] Python - MySQL 데이터 추가, 삭제, 업데이트 졸리운_곰 2023.05.13 488
59 [python][자료구조] Python의 JSON - 문자열을 JSON으로 변환하는 방법 졸리운_곰 2023.05.06 456
58 [python][자료구조] [Python] Logging to MongoDB (로그 남기기) file 졸리운_곰 2023.03.24 428
57 [python][자료구조] [스파르타 웹 개발 종합] 파이썬으로 크롤링하고 DB에 저장하기(request, bs4, mongoDB 패키지 사용) 졸리운_곰 2023.03.12 461
56 [python][자료구조] [MongoDB] Document Query(조회) – find() 메소드 졸리운_곰 2023.03.08 315
55 [python][자료구조] Python(flask)으로 mongoDB 제어하기 – pymongo file 졸리운_곰 2023.03.08 604
54 [python][자료구조] django sqlite3 MySQL로 전환하기 file 졸리운_곰 2023.03.02 409
53 [python][자료구조] django에서 db.sqlite3 데이터를 mysql로 옮기기 졸리운_곰 2023.03.02 427
52 [python][자료구조] Python - JSON 파일 읽고 쓰는 방법 졸리운_곰 2023.02.04 480
51 [python][자료구조] [인코딩] 유니코드 인코딩 처리 (특히 json 입출력 시) 졸리운_곰 2023.02.04 363
50 [python][자료구조] Dropbox API 사용하기 (with python) 졸리운_곰 2022.12.03 306
49 [Python][자료구조] SQLAlchemy Tutorial(한글) - 2 졸리운_곰 2022.12.03 393
48 [Python]][자료구조] SQLAlchemy Tutorial(한글) - 1 졸리운_곰 2022.12.03 275
47 [python][자료구조] python anaconda 에서 mysql 접속 졸리운_곰 2022.01.25 657
46 [python 자료구조] 림코딩의 파이썬으로 csv 다루기 강좌 (읽기,쓰기,수정,추가) 졸리운_곰 2022.01.16 521
45 python - 읽은 후 kafka 메시지를 삭제하는 방법 졸리운_곰 2021.07.13 900
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED