일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Dear abby
- teps
- obsidian
- 논문작성법
- 옵시디언
- Statics
- 텝스
- IEEE
- 에러기록
- Zotero
- MATLAB
- WOX
- 인공지능
- 수식삽입
- matplotlib
- Julia
- 고체역학
- JAX
- ChatGPT
- 생산성
- 우분투
- 딥러닝
- 텝스공부
- pytorch
- 논문작성
- Python
- Numerical Analysis
- 수치해석
- Linear algebra
- LaTeX
- Today
- Total
목록프로그래밍 Programming (94)
뛰는 놈 위에 나는 공대생
이미지 분류기를 테스트하는 과정에서 matplotlib을 쓰면 커널이 자꾸 죽는 현상이 발견되었다. 아나콘다 프롬프트를 보면 다음과 같은 에러를 확인하였고, 아래의 참고 링크를 통해서 문제를 해결했다. [I 19:30:40.558 NotebookApp] Kernel started: d0c3b529-6a30-422b-a296-d963b18e4149, name: python3 OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program..
tensorflow 2.0 이상 버전을 사용하고 있어서 당연히 PyTorch도 쉽게 gpu를 쓸 수 있을 거라 생각했지만 그렇지 않았다. 왜냐하면 PyTorch도 CUDA 버전을 맞춰줘야 하기 때문이다. 일단은 torch 라이브러리에서 다음 코드를 입력하여 True가 나오는지 False가 나오는지 확인한다. torch.cuda.is_available() 본인에게 gpu가 있음에도 false가 나온다면 CUDA를 설치해야하는 문제가 된다. CUDA 설치에 대해 전혀 모른다면 다음 링크에서 확인하자. https://normal-engineer.tistory.com/163 CUDA 버전을 제대로 확인하고 설치해야 불필요한 시간 낭비를 줄인다. 확인 방법은 Pytorch 사이트에서 확인하는데 https://py..
내가 사용한 python version은 3.10.2였는데 이 에러는 torchvision이 3.9 이상에서는 작동을 못하므로 python version 때문에 발생하는 문제라고 한다. 따라서 다른 가상환경 (python version==3.9.7)에서 실행했더니 에러가 없었다.
visual studio code에서 python 파일을 compile하려고 했는데 다른 영상에서 본 대로 따라해도 이상하게 컴파일이 되지 않는 문제가 발생하였다. 혹시 나와 같은 문제가 발생한 분들을 위해 글로 남긴다. 1. 일반적인 Visual studio code에서 python 사용하기 기본적으로 Visual studio code에서 compile하는 방법은 다음과 같다. (참고로 나는 anaconda를 설치한 상태이고 가상환경도 여러 개 있지만 다른 프로그램으로도 코딩을 해보고 싶어서 visual studio code를 설치한 것이다.) 1) python 파일을 다운받아서 설치한다. 버전 때문에 고민이 될 수 있는데 일단은 가장 최신 것으로 다운로드 https://www.python.org/do..
MATLAB의 장점 중 하나는 복잡한 기호 연산을 symbolic toolbox를 이용해서 쉽게 구할 수 있다는 점이다. 손으로 직접 식을 풀고 나서 내가 제대로 했는지 확인하기에 좋고, 적분의 경우에는 analytic하게 풀고 나서 검증용으로 매트랩에서 나온 결과를 비교할 수도 있다. 아래에 나오는 제목은 MATLAB 내의 함수 명을 기준으로 적었다. 1. diff (Differentiation 함수) symbolic formula에 대해서 diff(symbolic formula, 미분하고자 하는 변수)를 입력하면 미분을 수행한다. 예시 syms x f = x^3 ; diff(f, x) 다음 코드에 대한 결과 ans = 3*x^2 $x^3$을 미분한 $3x^2$이 나온다. diff를 쓸 때 첫번째 ar..
한 figure에 그래프를 워낙 많이 그리다보면 labeling이 중요하다. 이런 figure를 그리는 일들을 반복작업할 때 도움이 되는 팁들을 적고자 한다. 이 글은 일부 plot만 legend를 넣고 싶을 때 사용하는 방법에 대해 다룬다. Plot에 Displayname을 지정하는 방법 이 질문은 구글에 검색하면 많은 답변들이 있지만 내가 제일 편한 방식은 다음과 같다. plot을 그릴 때 'Displayname'을 지정할 수 있다. 이는 legend에 나올 이름을 지정하는 것이다. 예를 들면 x1 = 0:0.1:2*pi ; x2 = 0:0.1:2*pi ; y1 = sin(x1); y2 = cos(x2); figure; plot(x1,y1,'Displayname','sine') ; hold on; p..
MATLAB에서 여러 개의 함수를 배열에 넣어서 쓰고 싶을 수 있다. 주로 함수 evaluation을 반복적으로 수행해야하는 경우에 굳이 개별 함수 핸들을 만든 다음에 함수 값을 받도록 하는 것은 코드의 줄 수를 늘리기 때문이다. 따라서 cell array에 함수 핸들을 넣는데 사소하게 신경써야 하는 부분이 있다. 다음과 같이 빈 cell array를 만들고 그 안에 함수를 넣을 경우에 F(1) = @(x) x^2 ; cell array의 indexing에 주의해야한다. 위와 같이 함수 핸들을 cell로 변환할 수 없다고 나온다. 따라서 아래처럼 셀 내부에 접근해서 함수를 넣는다. 인덱싱을 { }로 해주면 된다. F{1} = @(x) x^2; 아니면 함수 핸들을 cell로 만들어서 넣는다. 그리고 이렇게..
그래프를 많이 그릴 일이 있을 때 쓰면 좋은 명령어들이다. 아래의 set( groot, ~)에서 groot 대신 0으로 지정해도 동일하다. 1. Plot의 line 두께 (오직 plot에만 적용된다. 즉, contour 같은 다른 그래프에서 적용 안됨) set( groot, 'defaultLineLineWidth', 1.5 ) ; % plot line 두께 지정 2. Grid on 을 default로 지정 set( groot, 'defaultAxesXGrid', 'on' ) ; % x축 방향으로 grid 생성 set( groot, 'defaultAxesYGrid', 'on' ) ; % y축 방향으로 grid 생성 3. 축에 있는 글씨 크기 지정 (title 포함) set( groot , 'defaultA..
이 오류는 tensorflow에서 tensor 연산을 할 때 나올 수 있는 오류이다. tensorflow는 tensor를 정의할 때 float라고 해도 float32로 설정한다. 즉, 32비트 공간만 쓰겠다는 것이다. 그런데 numpy의 경우에는 float를 float64로 설정한다. 따라서 numpy로 만든 array를 tensor로 만든 다음에 내가 새로 정의한 tensor와 계산을 하려니 오류가 나는 것이었다. 해결방법 numpy array를 만들 때 array.astype(float32) # array는 배열 이름 이렇게 array의 타입을 바꿔주거나 tensor를 정의할 때 type을 float64로 하든, 데이터형을 맞춰주면 된다. float64가 용량을 더 많이 차지하는 것만 고려하면 될 듯..
MATLAB에서 3D plot을 그릴 때 주의할 점이 있다. MATLAB에서는 결과값이 행렬로 나올 때 plot을 하면 행(row)을 Y축으로 인식하고, 열(column)을 X축으로 인식한다. 그런데 이것은 우리의 직관과 다르다. 예를 들어 $f(x_{1},x_{2}) = (1-x_{1})^2+100(x_{2} - x_{1}^{2})^{2}$라는 함수가 있다고 하자. 내가 $(x_{1},x_{2})$ 값을 넣을 때 당연히 f라는 변수에 (1,1)항목은 $(x_{1}(1),x_{2}(1))$값을 넣는다. 여기서 $x_{1}(1)$은 $x_{1}$후보 중에 첫 번째 값을 넣는다는 뜻이다. (2,1)항목에는 $(x_{1}(2),x_{2}(1))$ 를 넣는다. 그런데 MATLAB의 변수에서 첫 번째 INDEX는..