본문 바로가기

전체 글

(594)
[Python] 파일 경로와 슬래시(/) 파이썬 코드에서 파일 경로를 표시할 때 "C:/doit/새파일.txt" 처럼 슬래시(/)를 사용할 수 있다. 만약 역슬래시(\)를 사용한다면 "C:\\doit\\새파일.txt" 처럼 역슬래시를 2개 사용하거나 r"C:\doit\새파일.txt"와 같이 문자열 앞에 r 문자(Raw String)를 덧붙여 사용해야 한다. 왜냐하면 "C:\note\test.txt"처럼 파일 경로에 \n과 같은 이스케이프 문자가 있을 경우 줄바꿈 문자로 해석되어 의도했던 파일 경로와 달라지기 때문이다. 04-3 파일 읽고 쓰기 우리는 이 책에서 이제까지 값을 입력받을 때는 사용자가 직접 입력하는 방식을 사용했고 출력할 때는 모니터 화면에 결괏값을 출력하는 방식으로 프로그래밍해 왔다. 하지만 ... wikidocs.net
[C&C++] undefined reference to~ /cpp 파일에서 c 파일 불러오기 [C, C++] error: undefined reference to 빌드 시 가장 흔하게 발생하는 에러 중 하나로 다음 두가지 이유 중 하나로 발생한다. 1. 가장 흔히 발생하... blog.naver.com cpp 파일에서 c 파일에 구현되어 있는 함수를 call 할때 발생한다. c 파일에 구현되어 있는 함수의 정의가 적혀 있는 header 파일을 #ifndef _FILENAME_H_ #define _FILENAME_H_ #ifdef __cplusplus extern "C" { #endif .... #ifdef __cplusplus } #endif #endif /* _FILENAME_H_ */ extern "C"{ } 로 감싸야 함
[C&C++] 조건부 컴파일 사용하기 C 언어 코딩 도장: 76.1 조건부 컴파일 사용하기 조건부 컴파일은 #ifdef와 #endif 지시자를 사용하여 정의합니다. #ifdef에 매크로를 지정하면 해당 매크로가 정의되어 있을 때만 코드를 컴파일합니다. #ifdef 매크로 코드 #endif 다음 내용을 소스 코 dojang.io #ifdef, #endif가 전처리기 과정을 거치면 코드는 다음과 같이 바뀝니다.▼ 그림 76‑1 #ifdef 조건부 컴파일
[Pytorch] 텐서 쌓기 함수 torch.cat(), torch.stack() 비교 [Pytorch] 텐서 쌓기 함수 torch.cat(), torch.stack() 비교 torch cat vs stack 함수 차이 이번 글에서는 파이토치에서 텐서를 쌓는 경우 사용하게 되는 cat과 stack 함수의 차이와 사용 방법에 대해서 살펴보도록 하겠습니다. 먼저, 다음과 같이 간단한 (2, 3) shape jimmy-ai.tistory.com 이번 글에서는 파이토치에서 텐서를 쌓는 경우 사용하게 되는 cat과 stack 함수의 차이와 사용 방법에 대해서 살펴보도록 하겠습니다. 먼저, 다음과 같이 간단한 (2, 3) shape의 2차원 텐서 2개를 선언하겠습니다. import torch # (2, 3) 사이즈 2차원 텐서 2개 생성 a = torch.tensor([[1, 2, 3], [4, 5,..
[Python] json파일 다루기 (읽기, 쓰기, 수정) # json 파일 읽기 해당 파일을 읽기 위해서는 json 모듈을 임포트 한후, load함수를 통해 데이터를 가져올 수 있다. import json with open('C:\\test.json', 'r') as f: json_data = json.load(f) print(json.dumps(json_data) ) 출력 : {"K5": {"price": "5000", "year": "2015"}, "Avante": {"price": "3000", "year": "2014"}} 아래와 같이 들여쓰기를 통해 깔끔하게 출력하는 옵션도 있다. print(json.dumps(json_data, indent="\t") ) 출력 { "K5": { "price": "5000", "year": "2015" }, "Avan..
[Colab] 구글 드라이브 파일 다운로드 [CoLab] 파일 zip하는 법 [CoLab] 파일 zip하는 법 1. 자신의 위치를 파악합니다.(아마 '/content'에 있으실 것입니다.) !pwd 2. zip하고자 하는 파일 경로를 알아냅니다. 이 때 왼쪽에 있는 폴더 모양을 클릭하여 위치를 찾으면 aigong.tistory.com
[Python] os.path.join 실제로는 join()은 디렉토리의 구분 문자가 들어있으면, 그것을 root로 보는 성질이 있다. 대처법으로는 먼저 리스트를 이용해 문자열을 바꿔 쓰는 방법이 있다. [python] os.path.join사용법 os.path.join이란 경로(패스)명 조작에 관한 처리를 모아둔 모듈로써 구현되어 있는 함수의 하나이다. 인수에 전달된 2개의 문자열을 결합하여, 1개의 경로로 할 수 있다. os.path.jon()을 사용하기 위 engineer-mole.tistory.com
[MS] TVM 들어가기 앞서, 딥러닝 모델을 특정 디바이스 상에서 효율적으로 동작시키기 위해서는, 동작시킬 딥러닝 모델을, 타겟 디바이스에서 최적의 속도와 정확도를 낼 수 있는 머신 코드로 변환해야합니다. 이러한 코드 변환 작업을 자동으로 지원해주는 도구를, ‘딥러닝 컴파일러’라고 합니다. 딥러닝 컴파일러 개념도 딥러닝 컴파일러는, 다양한 딥러닝 플랫폼에서 학습된 딥러닝 모델을 입력으로 받아, 특정 하드웨어에서 동작 가능한 머신 코드(또는, 백엔드 코드)를 자동으로 생성합니다. 최근 제안된 XLA, TVM, Glow 와 같은 딥러닝 컴파일러들은, TensorFlow, Pytorch, MxNet, ONNX 등의 프레임워크로 작성된 모델을 입력으로 하여, CPU 및 GPU 용 백엔드 코드를 생성하고 있습니다. CPU 용 ..
[MS] RISC-V 란 무엇인가 RISC-V는 확립 된 축소 명령 세트 컴퓨터 (RISC) 원칙을 기반으로하는 개방형 표준 명령 세트 아키텍처 (ISA)입니다. 대부분의 다른 ISA 디자인과 달리 RISC-V ISA는 사용 비용이 필요없는 오픈 소스 라이센스로 제공됩니다. 많은 회사에서 RISC-V 하드웨어를 제공하거나 발표했으며 공개 소스 운영 체제를 사용할 수 있으며 명령 세트는 널리 사용되는 여러 소프트웨어 툴체인에서 지원됩니다. 명령 집합 아키텍처가 중요한 이유 ISA는 어떻게 든 응용 프로그램을 결정합니다. 세계에서 가장 유명한 2 ISA는 X86과 ARM이라는 것이 상식입니다. 그들의 응용 분야는 완전히 다릅니다. 랩톱, 데스크톱 및 서버의 99 % 이상이 X86 또는 AMD64 ISA를 기반으로합니다. IP는 Intel 및..
[PyTorch] torch.nn.CrossEntropyLoss() cls_loss = nn.CrossEntropyLoss() test_pred_y = torch.Tensor([[2,0.1,0.3],[0,1,0.3]]) # 실제 사용에선 softmax에 의해 각 행의 합이 1이 될 것이다. test_true_y1 = torch.Tensor([1,0]).long() # 1은 true값이 1번째(클래스)라는 것을 의미 test_true_y2 = torch.Tensor([0,1]).long() print(test_pred_y.shape) print(test_pred_y) print(test_true_y1) print(test_true_y2) print(cls_loss(test_pred_y, test_true_y1)) print(cls_loss(test_pred_y, test_..
[PyTorch] torchvision.dataset.CoCoDetection dataLoader를 만들어서 train함수에 넣어주어야 하는데 이 때 dataLoader를 만들려면 class로 데이터셋에 대한 정의가 있어야 한다. !git clone https://github.com/pdollar/coco/ %cd coco/PythonAPI/ !make !python setup.py install %cd ../.. !rm -r coco !sudo apt-get update !sudo apt-get install aria2 !aria2c -x 10 -j 10 http://images.cocodataset.org/zips/train2017.zip !aria2c -x 10 -j 10 http://images.cocodataset.org/zips/val2017.zip !aria2c -x ..
[PyTorch] model의 parameter 접근하기 nn.Linear()등으로 정의한 파라미터 접근은 parameter(), named_parameters()으로 가능하다. 정확히는 layer가 모두 nn.Module()을 상속받으므로 Module에 정의되어 있는 parameter 접근 방법을 사용하면 된다. 1. torch.nn.Module.parameters() parameter()는 layer 이름을 제외한 parameter값에 대한 iterator를 준다. layer = torch.nn.Linear(10,3) layer >> Linear(in_features=10, out_features=3, bias=True) for p in layer.parameters(): print(p) >> Parameter containing: tensor([[-0.2..
[ML] DCN, Deformable Convolution Networks 일반적으로 object detection 또는 segmentation은 pre-trained model을 사용합니다. 따라서 모든 layer에 deformable convolution을 사용하는 것이 아니라, 마지막 1~3 layer만 deformable convolution으로 변경하여 전이 학습을 진행합니다. [논문 읽기] DCN(2017) 리뷰, Deformable Convolution Networks 안녕하세요! 이번에 읽어볼 논문은 DCN, Deformable Convolution Networks 입니다! DCN은 (1) deformable convolution, (2) deformable RoI pooling 두 가지 방법을 제시합니다. 기존 CNN 구조 모델은 고정된.. deep-learni..
[ML] AutoEncoder 또한, 오토인코더는 reduction 측면과, reconstructing 측면이 함께 학습되며, 압축된 data coding을 통해서 실제 입력과 최대한 가까운 결과를 생성하기 때문에 Generative Model의 역할도 수행할 수 있습니다. 위 내용을 토대로 위키피디아에서 오토인코더의 키워드는 다음과 같습니다. Keword - Unsupervised learning - Representation learning (= Efficient coding learning) - Dimensionality reduction - Generative model learning 주로 오토인코더는 Dimensionality reduction, 차원 축소를 위해서 많이 사용됩니다. 오토인코더의 차원축소는 정확히 말하면 N..
[ML] 분류 성능 평가 지표 1. Precision, Recall and Accuracy Precision, Recall, Accuracy는 논문에서도 사용하는 지표들이며 가장 눈에 익는 지표들입니다. 하지만 서로 헷갈리는 경우가 많으니, 제대로 정리할 필요가 있겠습니다. 우리는 모델이 예측한 다양한 경우를 생각해보며, 위의 2x2 matrix에 해당하는 것을 어떻게 지표화 할 것인지 고민해보겠습니다. 지표를 고민함과 동시에 실제 사례를 들어서 해당 지표를 왜 써야하는지도 함께 생각해보고자 합니다. 여기서는 한달 동안의 날씨를 예측하는 상황을 생각해보겠습니다. 날씨는 비가 오거나 맑거나 두 가지만 존재한다고 가정합니다. 1.1 Precision(정밀도) 정밀도란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율입니다...
[ML] CNN의 역전파(backpropagation) cnn을 대충대충 알고서는 안다고 생각하고 있었는데 하나 하나 뜯어보니 제대로 아는게 하나도 없었다... 개념설명할 때도 항상 feed forward만 설명하지 backpropagation은 없었다. CNN의 역전파(backpropagation) · ratsgo's blog 이번 포스팅에서는 Convolutional Neural Networks(CNN)의 역전파(backpropagation)를 살펴보도록 하겠습니다. 많이 쓰는 아키텍처이지만 그 내부 작동에 대해서는 제대로 알지 못한다는 생각에 저 스스로도 ratsgo.github.io
[ML] Backpropagation Back Propagation이란 'Back Propagation' 는 Output Layer 직전의 Layer부터 최적화합니다. 미리 말하고 싶은 것은 'Back Propagation'도 Gradient Descent를 이용합니다. 즉 앞서 배웠던 Forward Propagation처럼 Cost를 구하여 W를 여러번 갱신하여 최적화합니다. 다만 그 차이는 'Forward Propagation'은 한번의 갱신을 위한 Cost를 구하는데 비효율적으로 많은 연산을 필요로 합니다. 그러나 'Back Propagation'에서는 최적화의 순서를 달리하여 몇번의 연산만으로 Cost를 구할 수 있습니다. 수식↓ A Step-by-Step Implementation of Gradient Descent and Back..
[ML] Transfer learning 2 Transfer learning은 classifier를 변경한다. Fine tuning은 이렇게 변경된 모델 전체를 다시 training한다. [DL] Transfer Learning vs Fine-tuning, 그리고 Pre-training 딥러닝에서 신경망을 공부하다보면 transfer learning과 fine tuning이라는 단어를 심심치않게 접할 수 있다. 둘 사이에는 무슨 차이가 있을까? 사실 필자도 생각없이 혼용하다(ㅋㅋ) 의문점을 해소할 heeya-stupidbutstudying.tistory.com [ 딥러닝 알아가기 ] Transfer Learning과 Fine Tuning Transfer Learning (전이학습) 성능이 좋은 딥러닝 모델을 만드는 최고의 방법은 바로 많은 수의 데..
[Colab] 무료 버전, pro 버전 차이점
[MMDetection] Config File Structure Config Name Style We follow the below style to name config files. Contributors are advised to follow the same style. {model}_[model setting]_{backbone}_{neck}_[norm setting]_[misc]_[gpu x batch_per_gpu]_{schedule}_{dataset} cascade_mask_rcnn_r101_fpn_1x_coco.py {xxx} is required field and [yyy] is optional. {model}: model type like faster_rcnn, mask_rcnn, etc. [model setting]: specific setting f..
[ML] Fully Convolutional Layer, Fully Connected Layer, AutoEncoder Fully Connected Layer1 만으로 구성된 인공 신경망의 입력 데이터는 1차원(배열) 형태로 한정됩니다. 한 장의 컬러 사진은 3차원 데이터입니다. 배치 모드에 사용되는 여러장의 사진은 4차원 데이터입니다. 사진 데이터로 전연결(FC, Fully Connected) 신경망을 학습시켜야 할 경우에, 3차원 사진 데이터를 1차원으로 평면화시켜야 합니다. 사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없습니다. 결과적으로 이미지 공간 정보 유실로 인한 정보 부족으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도를 높이는데 한계가 있습니다. 이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN(Convolutional Neural Network)입니다. ..
[OD] DBNet GitHub - WenmuZhou/DBNet.pytorch: A pytorch re-implementation of Real-time Scene Text Detection with Differentiable Binarization A pytorch re-implementation of Real-time Scene Text Detection with Differentiable Binarization - GitHub - WenmuZhou/DBNet.pytorch: A pytorch re-implementation of Real-time Scene Text Detection with... github.com Our model is based on Cascade R-CNN[2] for Object Detecti..
[CUDA] NVIDIA-SMI 확인방법 및 활용하기 nvidia-smi 옵션 사용법 nvidia gpu를 사용하기 위해서는 nvidia에서 제공하는 GPU Driver를 각각의 os에 맞게 설치해야 한다. 드라이버 설치에 성공하고 가장 먼저 사용하는 명령어는 nvidia-smi이다. 하지만 보통 사람들은 nvidia-smi를 GPU가 제대로 올라오는지 확인 차원에서만 사용하지만, 다른 차원에서는 nvidia smi 명령어는 현재 GPU의 모든 상태를 monitoring 해주고 있다. 그렇다면 nvidia-smi의 화면을 보면서 하나씩 간단하게 설명하도록 하겠다. # nvidia-smi 위 그림처럼 nvidia-smi 명령어는 많은 내용을 담고 있다. 아래에서 자세히 한번 확인 해보도록 하겠다. 1. Driver Version 현재 설치되어 있는 nvidi..
[Basic] 런타임과 컴파일타임 차이 원문보기 런타임(Runtime)과 컴파일타임(Compiletime)은 소프트웨어 프로그램개발의 서로 다른 두 계층의 차이를 설명하기 위한 용어이다. 프로그램을 생성하기 위해 개발자는 첫째로 소스코드를 작성하고 컴파일이라는 과정을 통해 기계어코드로 변환 되어 실행 가능한 프로그램이 되며, 이러한 편집 과정을 컴파일타임(Compiletime) 이라고 부른다. 컴파일과정을 마친 프로그램은 사용자에 의해 실행되어 지며, 이러한 응용프로그램이 동작되어지는 때를 런타임(Runtime)이라고 부른다. "런타임"과 "컴파일 타임"이라는 용어는 종종 서로다른 두 가지 타입의 에러를 나타내기 위해 사용되어지곤 하는데, 컴파일 타임 에러는 프로그램이 성공적으로 컴파일링되는 것을 방해하는 신택스에러(Syntax error)나..
[Docker] Docker run 옵션 추가하기 Docker을 run 해서 사용하는 중간에 추가적으로 옵션이 더 필요할 수도 있다. 예를 들어 volume share (local pc와 container 사이의 공유 폴더 생성) 이나 port 지정 같은 설정은 처음에 docker run을 할 때 -v 또는 -p로 주지 않으면 중간에 추가할 수가 없다. 이럴 때에는, container를 commit하여 현재 상태를 이미지로 저장해 두고, 이를 다시 run 하면서 추가 옵션을 주는 형태로 실행시키면 할 수 있다. 예를 들어, testtest 라는 이름의 container가 run 중일 때, port 지정 옵션을 추가하고 싶다면, sudo docker commit testtest NEW_NAME 위와 같이 먼저 한다. 여기서 NEW_NAME은 새로운 이름으..
[Python] os.system os.system은 실행결과를 반환값으로 제공하는게 아니라 활용이 안될거 같구요 os.popen을 사용해보세요 result = os.popen("net share").read().strip().split('\n') 나머지는 원하시는 대로 더해서 쓰시면 될거같습니다 파이썬 os.system 결과를 리스트로 저장할 수 있을까요 아래아래 글 답변으로 한 고개 넘었습니다. 감사 합니다. import os os.system(net shar m.ppomppu.co.kr
[Linux] opencv 설치 및 오류 pip3 install opencv-python 혹시 ImportError: libGL.so.1: cannot open shared object file: No such file or directory 에러가 뜬다면 위의 링크에서 처럼 $ sudo apt-get install libgl1-mesa-glx 를 실행하세요
[Docker] link 후 jupyter notebook, -p(port) 옵션 처음에는 cuda가 8888:8888이었다. 그리고 pytorch가 8080:8888로 설정한 후 jupyternotebook을 연결했더니 전혀 연결이 안됐다. 그래서 cuda를 8080:8888로 바꾸고 pytorch를 8888:8888로 변경하였더니 된다. jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root 8080:8888 pytorch docker컨테이너의 웹서버 port인 8888에서 host 웹서버 port 8888로 연결하기 위해서인가 보다. 하나는 그냥 웹서버 포트 8888이고 다른 하나는 ssh 접속을 위한 포트 입니다. 앞에 -p 옵션을 붙여주면 여러개 등록이 가능합니다. docker run -it -p [ 외부포트1 ]:[ 내부포트1 ] ..
[Linux] PATH값 초기화 하기 .bashrc를 검색하여 열어줍니다. 맨 아래로 내려가서 export PATH=$(getconf PATH) 입력해주고 SAVE 해줍니다. 터미널을 다시 켜주면 정상적으로 돌아와 있는 것을 볼 수 있을 겁니다. source ~/.bashrc [Ubuntu] PATH값 초기화 하기 각종 프로그램 및 언어를 설치하면서 PATH가 잘 못 설정되어 일부 기능을 제대로 사용하지 못 할 경우 PATH값을 초기화하는 방법입니다. 먼저 맨 왼쪽 아래 정사각형 버튼을 눌러 메뉴로 이동하고 somjang.tistory.com
[Docker] nvidia-docker 내가 어떤 컨테이너안에서 GPU를 사용하려고 하면 문제가 발생해요. 왜냐하면 컨테이너는 OS와 격리된 상태이기 때문이죠. 그렇기 때문에 이를 해결해줄 방법이 필요한데 그것이 바로 nvidia-docker에요! 간단하게 nvidia-docker에 대해서 말씀드릴게요. Docker 컨테이너에서 실행되는 응용프로그램은 OS와 분리 되어 있기 때문에 docker 컨테이너내에서 gpu를 실행할 수가 없어요. 그래서 docker 내부에서 gpu (driver) 이용하기 위해서는 host gpu driver와 docker를 연동시켜주는 driver가 있어야 하는데, 그것이 바로 nividia-docker에요! 아래그림을 보시면 'nvidia driver'가 이미 설치되어 있어야 한다는점 명심해주세요! (nividia..