Python

ML & DL

[밑시딥1] Chapter 2. 퍼셉트론

해당 포스팅은 '밑바닥부터 시작하는 딥러닝1'을 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서 기준입니다. ◾ 2.1 퍼셉트론 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 여기서는 1을 신호가 흐르는 것으로, 0을 신호가 흐르지 않는 것으로 사용한다. 그림 2-1은 입력으로 2개의 신호를 받은 퍼셉트론의 예이다. x1과 x2는 입력 신호, y는 출력 신호, w1과 w2는 가중치를 의미한다. 그림에서 원을 뉴런 혹은 노드라고 부른다. 입력 신호가 뉴런에 보내질 때는 각각의 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 정해진 한계(임계값, θ)를 넘어설 때만 1을 출력하며 이를 뉴런이 활성화한다 라고 표현하기도 한다. 이를 수식으로 나타내면 식 2.1과 같다. 퍼셉..

ML & DL

[밑시딥1] Chapter 1. 헬로 파이썬

최근에 밑시딥 스터디를 시작하였다. 블로그에 공부 기록을 남기기로 했으며 주에 2번씩 스터디가 진행 된다. 아는 내용이라고 흘려 보지(듣지) 말고 복습한다는 생각으로 꼼꼼히, 무사히 스터디를 완주하는 것이 목표이다 :) 해당 포스팅은 "밑바닥부터 시작하는 딥러닝 1"을 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서 내용 기준입니다. ◾ 1.1 파이썬이란? 간단하고 배우기 쉬운 프로그래밍 언어로 알려져 있다. 오픈 소스이기 때문에 무료로 사용 가능하며 컴파일 과정도 없어 편리하다는 장점이 있다. 또, 파이썬 코드는 읽기 쉽고 성능도 뛰어나다. 때문에 구글, MS, 페이스북 등에서 파이썬을 자주 사용하고 있다. 파이썬은 numpy, scipy와 같은 라이브러리 때문에 과학 분야, 기계 학습, 데이..

Python

[pytorch] transpose, permute 함수

pytorch로 permute 함수를 사용하다가 transpose랑 비슷한 것 같은데 정확히 차이를 모르고 있구나 싶어서 찾아보고 기록하기 위해 해당 포스트를 작성하게 되었다. ◾ permute() 먼저, permute 함수는 모든 차원을 맞교환 할 수 있는 함수로 차원을 교환하면서 contiguous한 성질이 사라진다는 특징이 있다. permute() 괄호 안에 인덱스들을 바꾸고자 하는 위치대로 적어주면 된다. x = torch.rand(1, 2, 3) x1 = x.permute(2, 1, 0) >> output [3, 2, 1] 위 예시에서는 기존에 0,1,2번 인덱스를 가진 [1,2,3]을 2,1,0번 인덱스 순서로 바꿔 [3,2,1]로 바꿔주었기 때문에 output이 [3,2,1]이 되는 것이다...

Python

[pytorch] .detach().cpu().numpy()

pytorch를 사용하다 보면 모듈을 통해 나온 tensor를 사용할 일이 많은데, GPU에 올라가 있는 tensor를 이용하려면 numpy 또는 list로 변환하여야 한다. tensor를 numpy 또는 list로 변환하는 방법은 조금만 찾아보면여러 함수들이 나오긴 하지만 각 함수들을 사용하는 순서가 꽤 중요하기 때문에 자주 쓰는 방법을 기록한다. ◾ detach() pytorch는 tensor에서 이루어진 모든 연산을 기록(graph)해 놓는데 이 연산 기록에서 역전파가 이루어지게 된다. detach() 함수는 이 연산 기록에서 역전파를 중단하고 분리한 tensor를 반환한다. ◾ cpu() GPU 메모리에 올라가 있는 tensor를 CPU 메모리로 복사하는 함수이다. 이후에 numpy로 변환하기 위..

Python

[pytorch] squeeze, unsqueeze 함수

◾ squeeze 함수 squeeze 함수는 Tensor의 차원을 줄이는 함수로, 설정한 차원을 제거 해 준다. 따로 차원을 설정하지 않으면 1인 차원을 모두 제거한다. 1인 차원이 여러개 있어도 여러개 전부 다! 제거한다. import torch x = torch.rand(1,7,46,46) print(x.shape) # torch.Size([1, 7, 46, 46]) x = x.squeeze(dim=1) print(x.shape) # torch.Size([7, 46, 46]) 한가지 조심해야 할 것은 batch size가 1일 때 squeeze 함수를 사용하게 되면 batch 차원을 없애버려 validation 시 오류가 발생하게 된다. 이걸 간과하고 있어서 학습할 때 validation에서 계속 오..

SQL

SQLAlchemy ORM(postgresql 연결) | 파이썬에서 ORM 사용하기, SELECT, JOIN, CAST, UNION, LABEL 등 자주 쓰는 문법 정리

Flask restx를 사용하여 API를 구축할 일이 있어 ORM을 사용하여 데이터베이스와 연결하였다. 데이터베이스 연결 및 ORM을 사용할 수 있도록 제공되는 파이썬 라이브러리로는 SQLAlchemy가 있다. SQLAlchemy를 사용하면 쿼리를 코드에서 실행할 수 있으며 ORM을 통해 데이터베이스와 연결 후 작업이 가능하다. 먼저 데이터베이스와 연결하는 작업이 필요하다. 가장 먼저 sqlalchemy.create_engine 함수를 이용하여 데이터베이스와 연결해 주는 엔진을 만들어야 한다. 나는 postgresql을 사용하고 있으며 "postgresql://db id:db pw@ip:port/db 이름"을 사용하여 엔진을 생성해주었다. 데이터베이스와의 소통을 관리해주는 세션을 로드하여 사용하여야 한다..

Computer Science

OS | MultiThreading(멀티 스레딩) & MultiProcessing(멀티 프로세싱)

최근에 프로그램 성능 향상을 위해 병렬 처리를 하고자 했으며, 이 포스팅은 스레딩을 사용할 것이냐 멀티 프로세스를 사용할 것이냐, 무엇이 더 적합한가에 대해 알아보고 고민을 하며 정리한 글이다. 1. 프로세스 프로세스는 프로그램이 실행되는 하나의 instance로 컴퓨터에서 연속적으로 실행 중인 프로그램을 의미한다. 각 프로세스는 각각 메모리 공간을 가지며 데이터를 저장하기 때문에 여러개의 프로세스를 사용할 때 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않아 작업이 중단되지 않는다. 2. 스레드 스레드는 하나의 프로세스 내에서 실행되는 흐름의 단위로 프로세스의 component이다. 하나의 프로세스에 여러 쓰레드가 생성될 수 있으며 부모 프로세스의 메로리 공간을 공유하기 때문에 하나의 프로그..

etc

VSCode | window 환경에서 python 가상 환경 생성하기

우분투에 익숙해져 윈도우에서 vscode 및 python을 쓰는 것이 어색해져버린 나머지 가상환경 생성 방법도 까먹어버린 것이다.... ssocr이라는 이름의 가상환경을 vscode에서 만드려고 했으나 우분투에서 vscode를 사용하면서 쓰던 conda create -n 명령어는 통하지 않았다. 찾아보니 윈도우 환경에서는 venv 명령어를 사용하여 가상환경을 생성한다고 한다. 가상환경을 생성하고자 하는 workspace 폴더로 이동한 후 python -m venv ssocr을 입력 해 준다. python -m venv ssocr 위의 명령어로는 가상 환경이 생성되기는 하지만 vscode 내에서 python interpreter 선택이 안되기 때문에 .exe 파일을 직접 선택해야 한다. vscode에서 C..

Gstreamer

Gstreamer RTSP server를 통해 IP camer(CCTV) 스트리밍하기, gstreamer 설치, Gstreamer RTSP server python

gstreamer 기초부터 문법은 아래 튜토리얼 링크와 개념을 설명 해 둔 다양한 블로그에서 자세히 볼 수 있다. 튜토리얼 : https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-language=python 개념 설명 블로그 : https://medium.com/may-i-lab/gstreamer-gstreamer-%EA%B8%B0%EC%B4%88-da5015f531fc gstreamer는 우분투에 기본적으로 설치되어 있는 경우도 있기 때문에 확인이 필요하다. which gst-launch-1.0 해당 명령어를 입력했을 때 /usr/bin/gst-launch-1.0 위와 같이 나온다면 우분투에 gstreamer가 설치가 되어 있..

Algorithm

[프로그래머스] Level1 | 비밀지도, 다트게임 - 파이썬(Python) | 2018 KAKAO BLIND RECRUITMENT

드디어 프로그래머스 레벨 1의 모든 문제를 다 풀었다!! 뿌듯- - 비밀지도 - https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 이진수로 바꿀 때 bin 함수를 사용하였다. 처음엔 2개의 리스트를 순서대로 bin 함수를 사용하여 이진수를 바꾼 후 한번 더 for문을 사용하여 1과 0을 구분하려고 했다. 하지만 이중 for문은 너무 비효율적인 것 같아 다른 방법을 찾아 보다가 bin(i|j)라는 방법을 ..

토오오끼
'Python' 태그의 글 목록 (3 Page)