목록딥러닝 (16)
ufris
gpu 0 만 사용해서 잘 돌아가다가 다른 학습을 위해 gpu 1번을 사용하는 순간 해당 에러가 발생 학습이 잘 되던 gpu 0 도 오류가 발생해서 학습이 진행 안됐는데 $ torch.cuda.init() # CUDA 시스템 초기화 코드가 있으면 위와 같은 오류가 발생하기 때문에 해당 코드는 삭제 후 돌리니까 오류가 해결 됐습니다
학습 도중에 killed 문제가 발생하면 GPU 메모리 문제라고 생각하는 경우가 많습니다 하지만 ram 메모리 부족으로 인해 발생하는 경우로 $ free -mram 사용률에 대해서 확인해보면 ram 메모리가 계속 증가하는 것을 볼 수 있습니다 해결 방법으로 1. 모델에서 나온 결과에 대해 cpu().numpy() 로 변환 2. 학습 loss를 확인하기 위해 Total_loss += loss 하는 경우가 많은데 Total_loss += float(loss) 나 loss.detach().cpu() 로 변환해서 Total_loss 변수에 저장해야합니다

successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero gpu를 사용해 tensorflow를 돌릴 때 위와 같은 warning이 뜰 때가 있습니다 이에 대한 해결 방법은 우선 노드를 확인합니다 $ lspci | grep -i nvidia $ /sys/bus/pci/devices $ cat /sys/bus/pci/devices/0000\:06\:00.0/numa_node 빨간색 부분이 노드를 확인할 때 체크한 숫자와 매칭이 됩니다(빨간색 박스 부분) 노드와 연결이 되어 있지 않으면 -1로, 연결되어 있다면 0으로 프린트가 됩니다..
기존에 학습된 pretrained model의 weight을 사용해서 새로운 task를 학습하는 모델로 transfer learning을 진행할 때 pretrained model과 transfer learning을 진행하는 model간의 class 개수가 달라 weight이 정확히 매칭되지 않는다 문제가 발생합니다 이 문제를 해결하는 방법은 매치되는 weight만 적용시키는 것인데 pretrained model의 weight을 저장할 때 save_format을 tf가 아닌 h5형식으로 저장하는 것 입니다(model.save_weight(save_format='h5') 기존에 model.save_weight을 통해 weight을 저장하면 save_format이 tf로 되어 있는데 이 상태로 class 개수..

일반적으로 Loss가 낮으면 학습이 잘됐기 때문에 정확도도 높습니다 따라서 Loss가 낮아지면 정확도는 높아지는 반비례 관계라고 생각하게 됩니다 하지만 Loss가 낮다고 해서 항상 Accuracy가 높아지는 반비례 관계가 아닙니다 두가지 예시를 보시면 1. 정확도가 높은 경우의 Loss 위의 경우는 낮은 확률로 정답을 다 맞춘 경우입니다 정답은 다 맞췄기 때문에 정확도는 1.0을 찍었고 Loss는 0.895로 나왔습니다 2. 정확도는 낮지만 1번 경우와 비교해 Loss가 낮은 경우 위의 경우는 왼쪽은 높은 확률로 정답을 틀린 경우 오른쪽은 높은 확률로 정답을 맞춘 경우입니다 하나는 틀렸기 때문에 정확도는 0.5을 찍었고 Loss는 0.869가 나왔습니다 1번 경우와 비교했을 때 정확도는 낮지만 Loss는..
그래픽 카드 3090에서 tensorflow를 사용할 때 모델을 생성하는 부분이 상당히 느립니다 3090을 사용하기 위해서는 cuda 11.0 이상을 사용해야하는데 그에 최적화된 tensorflow version이 따로 있습니다 일반적으로 conda install tensorflow-gpu를 사용하면 2.2 version으로 설치가 되고 cudatoolkit도 10.0으로 깔립니다 이 상태에서 tensorflow를 돌릴 때 처음 모델을 생성하는게 매우 느려지는데 이 문제를 해결하기 위해서는 $ conda install cudatoolkit # cudatoolkit이 11.0 버전으로 깔림 # cuda가 다른 버전으로 깔리면 cudatoolkit=11.0 으로 지정해주시면 됩니다 $ pip install ..

tensorflow를 이용해 softmax cross entropy를 직접 구현을 해보면 output = np.array([[0.12,0.546,0.02], [0.054,0.23,0.0003]]) Y = np.array([[0,1,0],[1,0,0]]) hypothesis = tf.nn.softmax(output) # [[0.29103963 0.44561682 0.26334355] # [0.31845567 0.37973867 0.30180566]], # Cross entropy cost/loss cost = tf.reduce_mean(-tf.reduce_sum(Y * tf.math.log(hypothesis), axis=1)) # Y * tf.math.log(hypothesis) = [[-0. -0.80..

논문 링크 batch 단위로 학습을 하면서 마지막 추론 과정에서 데이터마다 잘 맞추는 데이터, 잘 맞추지 못하는 데이터, 혼동이 되는 데이터 등등 여러가지 경우가 있습니다 위의 논문에서는 혼동이 되는 데이터(예 : 말 이미지를 사슴, 말, 소라고 추론하는 경우)는 아직 학습이 더 필요한 데이터이므로 계속 학습을 해야하고 잘 맞추는 데이터(예 : 말 이미지를 계속 말이라고 추론하는 경우)는 너무 쉬운 데이터이고, 잘 맞추지 못하는 데이터(예 : 말 이미지를 계속 사슴이라고 추론하는 경우)는 너무 어려운 데이터이므로 학습에 도움이 되지 않는 데이터라고 설명을 합니다 그래서 위와 같은 데이터는 학습에서 제외를 하고 혼동이 되는 데이터가 현재 학습에 필요한 데이터이기 때문에 해당 데이터들로만 학습을 진행해야한다..
tensorflow에서 ckpt를 저장하면 weigh(.ckpt)과 model graph(.meta)가 저장되는데 test 시에 사용했던 model을 다시 코드로 작성하지 않고 import_meta_graph를 통해 model을 생성할 수 있습니다 그렇게 되면 placeholder 부분을 어떻게 설정할지 감이 잡히지 않았는데 get_tensor_by_name을 통해 placeholder 부분을 불러올 수 있습니다 tf.reset_default_graph() sess = tf.Session() sess.run(tf.global_variables_initializer()) # import_meta_graph를 통해 model load saver = tf.train.import_meta_graph(os.pat..
기본적인 tensorRT 설명 및 설치 방법 https://eehoeskrap.tistory.com/414 [TensorRT] NVIDIA TensorRT 개념, 설치방법, 사용하기 1. TensorRT 란? 2. TensorRT 설치하기 3. 여러 프레임워크에서 TensorRT 사용하기 1. TensorRT 란? TensorRT는 학습된 딥러닝 모델을 최적화하여 NVIDIA GPU 상에서의 추론 속도를 수배 ~ 수십배 까지 향상시켜.. eehoeskrap.tistory.com 라즈베리 파이를 위한 tflite https://github.com/tensorflow/examples/blob/master/lite/examples/image_classification/raspberry_pi/README.md ..