전체 글
-
모터 토크 분석모터 2023. 5. 9. 11:44
항등식 $$\nabla \cdot (E \times H) = (\nabla \times E) \cdot H - (\nabla \times H) \cdot E$$ 맥스웰 방정식 적용 $$\nabla \cdot (E \times H) = -\frac {\partial} {\partial t} \{\frac 1 2 B \cdot H\} - J \cdot E - \frac {\partial} {\partial t} \{{\frac 1 2 D \cdot E}\}$$ 이항 $$\nabla \cdot (E \times H) + \frac {\partial} {\partial t} \{\frac 1 2 B \cdot H\} + J \cdot E + \frac {\partial} {\partial t} \{{\frac ..
-
ICM-20xxx 센서 필터 적용쿼드 콥터 2023. 5. 8. 10:54
쿼드콥터가 자꾸 한 쪽으로 과도하게 기울거나 진동이 너무 심해서 제어가 안된다면 필터 오동작을 의심해봐야 한다. 필터 없이 ICM-20608 센서에서 값을 1khz 단위로 읽어와 필터를 읽어와서 오일러 각에 상보필터를 적용하고 자이로에 칼만필터를 적용하는 코드를 작성한게 원인이었다. ICM-20608 센서는 자체적으로 필터 기능을 내장하고 있어 설정을 통해 기능을 사용할 수 있는데 관련한 센서의 레지스터 비트는 FCHOICE_B, DLPF_CFG 이고 온도 센서도 켜야 제대로 동작하는 거 같다. void init_mpu () { int delay_time = 100; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); HAL_Delay(delay_time); ui..
-
NLP 입문자를 위한 text 전처리AI 2023. 4. 26. 12:32
문장을 단어로 쪼개고 단어에 미리 매긴 번호로 문장을 표현하는 것 을 목표로 한다. 1. 챗봇 모델을 블랙박스로 생각해 본다. 산에서 문명의 도움 없이 불을 피는 방법을 알려주세요 -> BLACK BOX -> 산에서 문명의 도움 없이 불을 피우는 방법은 여러 가지가 있습니다. 여기 몇 가지 기본적인 방법들을 소개합니다 ......... 2. 컴퓨터에서 문장을 어떻게 표현하는 지 궁금해 한다. 3. 문장을 단어로 쪼개고 단어에 미리 매긴 번호로 문장을 표현하는 것이 좋다고 다른 사람들이 밝혀냈으므로 받아들인다. 그리고 한국어 단어를 다뤄야 하므로 konlpy의 Okt와 tensorflow의 TextVectorization을 사용해 본다. from konlpy.tag import Okt import tens..
-
AI할 때 수치 안정성AI 2023. 4. 25. 17:34
tf.math.log(tf.reduce_sum(tf.exp(tf.constant([10000, 9000], dtype=tf.float32)))) # = inf ... 1번 계산 tf.reduce_logsumexp(tf.constant([10000, 9000], dtype=tf.float32)) # = 10000 ... 2번 계산 위의 두 계산은 같은 값을 리턴하지 않는다. 왜냐하면 계산 중간에 tf.exp(tf.constant(10000, dtype=tf.float32)) # = inf 이게 inf기 때문이다. $$ \log{(e^{10000} + e^{9000})} = \log{\cfrac {(e^{10000} + e^{9000})} {e^{10000}}} + 10000 = log(1 + 0) + 10..
-
tensorflow custom gradientAI 2023. 4. 25. 17:02
만약 다변수 벡터함수의 편미분을 모른다면 당신이 바보 처럼 느껴질 수 있습니다. tensorflow에서는 사용자가 직접 미분 가능 함수들을 제작할 수 있게 custom gradient라는 기능을 제공한다. 다음과 같이 사용할 수 있다. import tensorflow as tf @tf.custom_gradient def custom_sin_plus_exp (x, y, z): def grad (upstream): return upstream * tf.cos(x), upstream * tf.exp(y), None return tf.sin(x) + tf.exp(y), grad 위에 @tf.custom_gradient 데코레이터를 붙이고 (리턴값, 미분 함수) 꼴로 리턴하면 된다. 그리고 미분 함수인 grad의..
-
tensorflow용 RNN-T custom 함수 제작 후기AI 2023. 4. 25. 16:41
pytorch에는 rnnt-loss 함수가 공식적으로 제공된다. tensorflow에는 rnnt-loss 함수가 제공되지 않는다. 3rd party 모듈이 있었지만 입력을 어떻게 줘야하는 지에 대한 세부 설명이 없어서 자작해 봤다. custom tensorflow 함수를 만드는 아주 좋은 경험들을 얻게 된거 같다. 이 자작함수 만드려면 생각지도 못한 수치 오류와 아이디어들로 넘쳐난다. custom 함수를 만들면서 고려해야 하는 것은 크게 3가지다. gpu 연산을 사용하도록 설계해야 한다.수치 연산 도중에 nan이 나오지 않도록 안전한 함수들을 사용해야 한다.쓸데없이 gpu 메모리를 많이 사용하지 않도록 해야한다. 1번의 경우 gpu로 할 수 있는 연산의 특성을 알면 편하다. 답을 구하는데 있어서 순차적인..
-
yolov8 전이 학습 시키기AI 2023. 4. 17. 13:00
옛날에 yolov3 시절에 마스크 검출 머신을 darknet으로 전이학습 해봤던 기억이 있다. 그 때 darknet 사용법이 좀 복잡했던 거로 기억하는데 yolov8은 엄청 쉬워졌다. 1. 파이썬이 있다고 가정하고 2. 레포 클론하고 git clone https://github.com/ultralytics/ultralytics 3. 레포 들어가서 help yolo help 치면 다음과 학습용 명령어를 볼 수 있다. yolo train data=xxx.yaml model=yolov8n.pt epochs=10 lr0=0.01 4. 여기서 data=xxx.yaml 의 xxx.yaml은 train: D:/datasets/smoking.v3i.yolov8/train/images val: D:/datasets/sm..