본문 바로가기

분류 전체보기59

Pytorch Tensor(텐서) 만들기 Pytorch의 Tensor(텐서) 조작하기 1¶ import torch import numpy as np Tensor(텐서) 를 만드는 다양한 방법¶ empty¶주어진 크기의 아무값으로도 초기화되지 않은 텐서를 만든다. 텐서 성분의 값들은 쓰레기값들이다. torch.empty(4) tensor([ 1.6751e-37, -1.9427e-13, 1.6751e-37, -1.9427e-13]) torch.empty((4,5)) tensor([[0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00], [0.0000e+00, 0.0000e+00, 0.0000e+00, 1.4013e-45, 0.0000e+00], [0.0000e+00, 0.0000e+00, 0.0.. 2021. 3. 23.
Kaggle에서 Pytorch로 간단한 Mnist 숫자 분류기 만들기 Pytorch로 간단한 Mnist 숫자 분류기 만들기¶캐글에서 Mnist 숫자를 분류하는 연습을 여기서 할 수 있다. Kaggle에서 제공하는 데이터와 환경으로 간단하게 Mnist 숫자를 분류하는 연습을 해보자. import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import Dataset,DataLoader 사용할 경로와 epoch, 배치사이즈, learning rate를 한곳에서 쉽게 조정하여 사용할 수 있도록 하였다. class PATH: TRAIN = '/ka.. 2021. 3. 16.
Pytorch로 선형 회귀(Linear Regression) 구현하기 Pytorch로 선형회귀 구현하기¶ import numpy as np import matplotlib.pyplot as plt import torch import torch.nn as nn from torch.optim import SGD 데이터 생성¶y = 2*x + 10에서 약간의 오차를 준 데이터를 사용하였다. # y = x*2 + 10 data_x = np.random.randint(1,20,20) data_y = np.array([1*np.random.randn() + x*2 + 10 for x in data_x]) data_x = torch.FloatTensor(data_x).unsqueeze(dim=1) data_y = torch.FloatTensor(data_y).unsqueeze(dim=.. 2021. 3. 15.
C/C++서 양수 정수 나눗셈 결과의 올림 구하기 math.h의 ceil을 쓰면 간단하게 구할 수 있지만, 다르게도 한번 해보자. c = (a+b-1)/b; 확인해보자. #include int main(void){ int a[7] = {5,6,7,11,100,65,99}; int b[7] = {2,2,5,5,5,13,30}; for(int i=0;i 2021. 3. 1.
Scanf의 형식지정자에 대하여 scanf는 c언어를 배울 때 처음 배우는 입력 함수이다. 정수 하나를 입력받는다고 하자. int i; scanf("%d",&i); 위와 같을 꼴로 int 정수 하나를 입력받을 것이다. scanf에서 우리가 첫 파라메터로 입력한 값을 형식지정자라고 한다. 이 값을 잘 조정함으로 우리는 다양한 입력을 여러가지 방법으로 받을 수 있다. 예를들어 123456789 라는 입력이 있을 때 이 입력을 9자리의 정수가 아닌 3자리의 정수 3개로 받을 수 있다. #include int main(void){ int a,b,c; scanf("%3d%3d%3d",&a,&b,&c); printf("a:%d, b: %d, c: %d\n",a,b,c); } 이때 출력은 다음과 같다. > a:123, b: 456, c: 789 형.. 2021. 2. 26.
.py를 .ipynb으로, 또 그 반대로 ipynb-py-convert 를 사용하여 파이썬 스크립트를 노트북파일로 변환하고, 노트북 파일도 스크립트로 변환이 가능하다. 설치법 pip install ipynb-py-convert 사용법 - abc.py를 def.ipynb로 바꿀때 ipynb-py-convert abc.py def.ipynb - abc.ipynb를 def.py로 바꿀때 ipynb-py-convert abc.ipynb def.py 위처럼 입력하면 끝이다. 스크립트를 노트북으로 바꿀때 셀구분이 하고싶을것이다. # %% 로 셀구분이 가능하며, ''' 을 사용한 주석으로 마크다운을 적용할 수 있다. https://pypi.org/project/ipynb-py-convert/ 2020. 10. 17.
Python에서 c,c++ 코드 사용하기 python의 ctypes를 이용하면 c혹은 c++에서 작성한 코드를 사용가능하다. a.cpp 에서 작성한 단순 곱셈함수 mul을 python에서 사용해보자. //a.cpp #include extern "C"{ int mul(int a,int b){ return a*b; } } 위 파일을 공유라이브러리로 만들어 주어야한다. g++로 a.cpp를 liba.so로 만들어주자. g++ -shared -fPIC a.cpp -o liba.so liba.so 파일이 생성되었다. a.py에서 liba.so의 mul을 사용해보자. #a.py import ctypes a = ctypes.CDLL("./liba.so") mul = a.mul print(mul(13,43)) a.py를 실행시키면 559가 출력된다. 2020. 10. 4.
MFC frame 초기 스타일 지정하기 frame의 PreCreateWindow에서 스타일을 지정해주면 된다. BOOL CFrameWnd::PreCreateWindow(CREATESTRUCT& cs) 가 본체이며, 만약 CFrameWnd 를 상속하여 만든 frame이 CMainFrame라면 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 에서 cs.style을 건드려 주어야 한다. 만약, 프레임을 마우스로 크기조절되는것을 막고싶다면, WS_THICKFRAME 을 제거해주어야한다. 제거는 not, and연산으로 해준다. cs.style &= ~(WS_THICKFRAME); 로 할 수 있다. 만약 창에서 최소화, 최대화 박스도 같이 없애버리고싶다면 다음과같이 해주면 된다. cs.style &= ~(WS_.. 2019. 4. 21.
MFC 꺾은선 그리기 CArray 와 CDC::PolyLine을 사용하면 된다. CArray points; CArray 의 Add() 를 사용해서 더해주고 CArray 의 GetData()로 CArray를 배열로 가져올 수 있다. BOOL CDC::Polyline(LPPOINT lpPoints,int nCount); 에 점들과 배열 길이에 관한 정보를 넘겨주면 되는데, 다음과 같이 쓸 수 있다. // onPaint에서 CPaintDC dc(this); dc.PolyLine(points.GetData() , points.GetSize()); std::vector를 사용할 수도 있다. std::vector vPoints; // onPaint에서 CPaintDC dc(this); dc.PolyLine(&vPoints[0] , vP.. 2019. 4. 21.