๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

๐Ÿ’ป Programming87

[python] 3์ฐจ์› ๊ณต๊ฐ„ ํšŒ์ „ ๋ณ€ํ™˜ | scipy Rotation scipy์˜ Rotation ํด๋ž˜์Šค๋Š” 3D ๊ณต๊ฐ„์—์„œ์˜ ํšŒ์ „ ๋ณ€ํ™˜์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ํšŒ์ „์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ–‰๋ ฌ๋กœ๋ถ€ํ„ฐ ํšŒ์ „์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ํšŒ์ „์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ถ•๊ณผ ๊ฐ๋„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ์ „์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์„œ 3D geometry๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ ์ค‘์—๋„ Rotation.apply() ๋ฉ”์„œ๋“œ๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด ๋ฉ”์„œ๋“œ๋Š” ํšŒ์ „๋œ ๋ฒกํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ์€ ๋ฒกํ„ฐ์— ํšŒ์ „ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์ˆ˜์‹์ ์œผ๋กœ๋Š” ์œ„์™€ ๊ฐ™์ด ๊ธฐ์กด ๋ฒกํ„ฐ์— ํšŒ์ „ํ–‰๋ ฌ(R)์„ ๊ณฑํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ํšŒ์ „ ํ–‰๋ ฌ์„ ๋ฒกํ„ฐ์— ๊ณฑํ•จ์œผ๋กœ์จ ํšŒ์ „๋œ ๋ฒกํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. Rotation.inv().apply() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํšŒ์ „ ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ์„ ๋ฒกํ„ฐ์— ์ ์šฉํ•˜์—ฌ ํšŒ์ „ ํ–‰๋ ฌ์˜ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ์ฝ”๋“œ ์˜ˆ์ œ fr.. 2024. 3. 29.
[python] ํŒŒ์ด์ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ | joblib ์‚ฌ์šฉ๋ฒ• | ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ | ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ joblib์€ ํŒŒ์ด์ฌ์—์„œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. Parallel ํด๋ž˜์Šค Parallel ํด๋ž˜์Šค๋Š” ๋ณ‘๋ ฌ๋กœ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ - n_jobs n_jobs ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ž‘์—…์˜ ์ˆ˜๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ CPU์˜ ์ฝ”์–ด ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํšจ๊ณผ์ ์ด๋‹ค. n_jobs=-1์€ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ตœ๋Œ€ํ•œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋ผ๋Š” ์˜๋ฏธ - backend ๋ฐฑ์—”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ๋ณ‘๋ ฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ์—ญํ• ์„ ํ•˜๋ฉฐ, loky ๋ฐฑ์—”๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. loky (๊ธฐ๋ณธ ๋ฐฑ์—”๋“œ) loky๋Š” ํŒŒ์ด์ฌ์˜ concurrent.futures๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ฐฑ์—”๋“œ๋กœ, ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ํ™œ์šฉ ํ”„๋กœ์„ธ์Šค ํ’€๋ง์„ ํ†ตํ•ด ํšจ.. 2024. 1. 19.
[python] ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ Process ์‚ฌ์šฉ๋ฒ• ๋ฐ ์ฝ”๋“œ ์˜ˆ์‹œ | multiprocessing.Process | ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ• ๋‹น [python] ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ Pool ์‚ฌ์šฉ๋ฒ• ๋ฐ ์ฝ”๋“œ ์˜ˆ์‹œ | multiprocessing.Pool | python ์†๋„ ํ–ฅ์ƒ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์ž‘์—…ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  (Inter-Process Co mvje.tistory.com ์œ„ ํฌ์ŠคํŒ…์—์„œ ํŒŒ์ด์ฌ์œผ๋กœ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด multiprocessing.Pool ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค๋‹ค. ์ด๋ฒˆ์—๋Š” multiprocessing.Process๋ฅผ ํ™œ์šฉํ•œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ ๋ฐฉ๋ฒ•๊ณผ Pool, Process ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. multiprocessing.Pool๊ณผ multiprocessing.Process๋Š”.. 2024. 1. 7.
[python] ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ Pool ์‚ฌ์šฉ๋ฒ• ๋ฐ ์ฝ”๋“œ ์˜ˆ์‹œ | multiprocessing.Pool | python ์†๋„ ํ–ฅ์ƒ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์ž‘์—…ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  (Inter-Process Communication, IPC) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ์—์„œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ๋ชจ๋“ˆ์€ multiprocessing์ด๋‹ค. multiprocessing ๋ชจ๋“ˆ์€ ํŒŒ์ด์ฌ์—์„œ ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, threading ๋ชจ๋“ˆ๊ณผ ๋‹ฌ๋ฆฌ Global Interpreter Lock (GIL)์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฏ€๋กœ CPU-bound ์ž‘์—…์— ํšจ๊ณผ์ ์ด๋‹ค. multiprocessing.Pool multiprocessing.P.. 2024. 1. 7.
[pytorch] ๋ชจ๋ธ ์ผ๋ถ€๋ถ„๋งŒ ์ €์žฅํ•˜๊ธฐ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ PyTorch์—์„œ๋Š” ๋ชจ๋ธ์˜ ์ผ๋ถ€๋ถ„๋งŒ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋ธ์˜ ํŠน์ • ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๊ณ  ๋ชจ๋ธ์˜ ์ผ๋ถ€๋ถ„๋งŒ์„ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. ๋ชจ๋ธ์˜ ํŠน์ • ๋ถ€๋ถ„์„ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด PyTorch์—์„œ๋Š” state_dict์˜ ํŠน์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (state_dict๋Š” ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜์™€ ํŽธํ–ฅ ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ์‚ฌ์ „(dictionary)์ด๋‹ค) ๋‹ค์Œ์€ ๋ชจ๋ธ์˜ ํŠน์ • ๋ถ€๋ถ„์„ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ด๋‹ค. import torch import torch.nn as nn # ์˜ˆ์ œ ๋ชจ๋ธ ์ •์˜ class ExampleModel(nn.Module): def __init__(self): super(ExampleModel, self).__init__() self.layer1 = nn.Line.. 2023. 12. 9.
[PostgreSQL] ๋‚ ์งœ ๋˜๋Š” ์‹œ๊ฐ„์˜ ์ผ๋ถ€๋ฅผ ์ง€์ •๋œ ๋‹จ์œ„๋กœ ์ž๋ฅด๊ธฐ | 'date_trunc' ํ•จ์ˆ˜ ์„ค๋ช… PostgreSQL์—์„œ date_trunc ํ•จ์ˆ˜๋Š” ๋‚ ์งœ ๋˜๋Š” ์‹œ๊ฐ„์˜ ์ผ๋ถ€๋ฅผ ์ง€์ •๋œ ๋‹จ์œ„๋กœ ์ž๋ฅด๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๋‹จ์œ„์— ๋”ฐ๋ผ ์ฃผ์–ด์ง„ ๋‚ ์งœ ๋˜๋Š” ์‹œ๊ฐ„์˜ ๊ฐ’์„ ๋ฐ˜์˜ฌ๋ฆผ ๋˜๋Š” ๋ฒ„๋ฆผํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. date_trunc(unit, source); unit: ์ž๋ฅด๊ณ ์ž ํ•˜๋Š” ์‹œ๊ฐ„ ๋˜๋Š” ๋‚ ์งœ์˜ ๋‹จ์œ„๋ฅผ ์ง€์ • source: ์ž๋ฅด๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ์ด ๋˜๋Š” ๋‚ ์งœ ๋˜๋Š” ์‹œ๊ฐ„ date_trunc ์‚ฌ์šฉ ์˜ˆ์‹œ ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์—์„œ ์‹œ๊ฐ„์„ ์ž๋ฅด๊ธฐ SELECT date_trunc('hour', NOW()); -- ๊ฒฐ๊ณผ: ํ˜„์žฌ ์‹œ๊ฐ„์˜ ์ •๊ฐ๊นŒ์ง€์˜ ๊ฐ’์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‚ ์งœ์—์„œ ์›”์„ ์ž๋ฅด๊ธฐ SELECT date_trunc('month', '2023-03-15'::date); -- ๊ฒฐ๊ณผ: '2023-03-01' (ํ•ด๋‹น ์›”์˜ ์ฒซ ๋ฒˆ์งธ ๋‚ ์งœ.. 2023. 12. 3.
728x90