전체 글

전체 글

    [TIL] 210326 - Deep LearniNg (~C1W2L07)

    [TIL] 210326 - Deep LearniNg (~C1W2L07)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L07 까지의 내용을 정리한 것이다. 비용함수의 결과값을 최저로 만드는 파라미터를 어떻게 찾아야 하는지 설명한다. 그리고 그 과정에 필요한 미분의 개념을 간단히 살핀다. 내용 요약 경사 하강법 비용함수의 값을 최소화하는 $w$와 $b$를 찾는데 사용할 수 있는 방법이다. 이때 비용함수는 볼록한(convex) 형태여야 한다. 만약 비용함수의 형태가 볼록하지 않다면 지역 최솟값을 여러 개 가지게 되어 진짜 최솟값을 찾기 어려워진다. 비용함수의 최솟값을 찾기 위한 시작점은 임의로 정하여도 상관없다. 경사 하강법을 사용하면 어디에서 시작하든 최솟값이 있는 곳으로 향하게 된다. 가파른 방향으로 한 스텝씩 업데이트하며 최솟값을 찾아간다. ..

    [TIL] 210325 - Deep LearniNg (~C1W2L03)

    [TIL] 210325 - Deep LearniNg (~C1W2L03)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L03 까지의 내용을 정리한 것이다. 로지스틱 회귀와 비용 함수에 대한 내용을 다룬다. 내용 요약 신경망 학습방법 정방향 전파 역방향 전파 이 두가지가 어떻게 다른지는 이후에 다루게 됨 일단은 이런 것이 있다는 것을 알고 넘어감 이진분류(Binary Classification) yes or no로 분류하는 것 고양이가 맞다. / 고양이가 아니다. 로지스틱 회귀(Logistic regression)라는 알고리즘을 사용함 표기법 정리 $m$: 학습을 위한 데이터 세트 수 ${(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), ... (x^{(m)}, y^{(m)}), }$ $n$: 입력 데이터 하나의 원소 개수 ..

    [TIL] 210324 - Deep LearniNg (~C1W1L04)

    [TIL] 210324 - Deep LearniNg (~C1W1L04)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W1L04 까지의 내용을 정리한 것이다. 내용 요약 신경망 X(입력)와 Y(출력)를 연결지어주는 함수를 찾는 과정 데이터가 많으면 많을수록 성능이 좋은 함수를 찾을 수 있음 해당 뉴런에 관련 없는 입력값이라도 입력해야 함 그 입력의 관계 여부, 가중치는 학습하면서 조절됨 신경망 종류 NN: 데이터베이스화된 데이터에 적합 CNN: 이미지에 적함 RNN: 오디오, 텍스트에 적합 Custom, Hybrid 데이터 종류 Structured Data 데이터베이스로 표현된 데이터 정보의 특성이 잘 드러남 Unstructured Data 오디오, 텍스트, 이미지 특징값을 추출하기 어려움 딥러닝 기술 발전으로 특징을 잘 찾아낼 수 있게 됨 최근 ..

    PowerShell 명령 조금 더 쉽게 입력하기(Alias 설정)

    길이가 긴 명령어를 입력하기 번거로울 때 명령어를 축약하거나 다른 이름(별칭, alias)으로 호출하고 싶을 때 사용할 수 있는 방법입니다. alias 설정 확인 > Get-Alias 이 명령으로 이미 지정된 alias 설정값을 확인할 수 있습니다. alias 설정 하기 > Set-Alias [별칭] [대상 명령] 위와 같은 형식으로 alias를 설정할 수 있습니다. 저의 경우 Vim을 쓰다가 최근 NeoVim으로 넘어왔는데, nvim이 아니라 습관적으로 vim을 입력하곤 합니다. 따라서 vim이나 vi라고 입력하여도 nvim이 실행되도록 설정하였습니다. > Set-Alias vim nvim > Set-Alias vi nvim 이제 제대로 별칭이 지정되었는지 확인해보겠습니다. > Get-Alias .....

    [STM32] 레지스터 직접 접근 방식으로 UART 통신 예제 구현하기

    HAL 드라이버 없이, 레지스터 접근만으로 UART 통신 예제를 만들었다. 처음 시작할 때는 어디서부터 시작해야 할 지 몰라 막막했고, 하나하나 이해하면서 진행하느라 완성하는 데 약 2시간이 걸렸다. 전체 흐름을 이해하니 생각보다 별것 아니라는 것을 알게 되었다. 레지스터에 직접 접근하는 것도 익숙해졌고, 각 페리페럴에 공급될 클록 신호가 만들어지는 과정도 살펴볼 수 있었다. 프로젝트를 만들 때 HAL 드라이버를 포함하지 않았기 때문에 접근할 레지스터 주소를 데이터 시트를 확인해가며 직접 입력하여 만들었다. Reference Manual(RM0008)의 3.3 Memory Map을 참고하면 좋다. 이번 예제에 필요한 레지스터 주소는 아래와 같다. (사실 USART1은 사용하지 않는데 모르고 만들었다. 아..

    Windows 터미널에서 WSL 시작 경로 변경하기

    Windows 터미널에서 WSL 시작 경로 변경하기

    시작 경로를 변경하기 위한 설정값 Windows 터미널에서 WSL을 시작하면 시작 경로가 윈도 기준으로 C:\Users\로 되어있습니다. 매번 리눅스 디렉터리의 Home 경로로 변경하는 것이 번거로워서 시작 경로를 바꿀 수 있는 방법을 찾아보았습니다. 다행히 Microsoft 공식 문서에서 방법이 설명되어 있었습니다. 설정 파일에 아래의 값을 추가하면 시작 경로를 자신의 계정의 Home 경로로 설정되는 것을 확인하였습니다. { "startingDirectory" : "//wsl$/Ubuntu/home/", } Windows 터미널 설정 방법을 모른다면 이렇게 하세요. Windows 터미널의 설정을 위해서는 상단 탭에서 아래 방향 꺾쇠 버튼①을 클릭하고 펼쳐진 메뉴에서 설정②을 클릭하면 됩니다. Windo..

    키보드로 EOF값 입력 방법

    TCPL의 예제 1-6을 풀던 중 EOF(End of file)를 입력해야 하는 상황이 생겼습니다. 키보드로 EOF를 입력해야 할 때는 Ctrl+D를 누르면 되는 것을 확인하였습니다. 참고로, 리눅스 환경에서 확인하였습니다. 윈도나 맥에서도 똑같이 동작하는지는 확인하지 않았습니다.

    [다시 C언어] 함수 반환형, 안적어도 될까?

    Keringhan의 "The C Programming Language"에 실려있는 예시 코드들을 보면 main 함수 반환형이 적혀있지 않은 것을 발견하였습니다. 아래 처럼요. main() { ... } 평소 같았으면 저자가 코드를 빠트렸나보다 생각했었을 것입니다. 그러나 내용을 충분히 곱씹으며 봐야 한다는 keringhan의 책이어서 혹시나 하는 마음으로 책 내용과 똑같이 반환형 없이 코드를 작성하고 빌드해 보았습니다. 결과는 아래와 같은 경고 문구가 출력되었습니다. Ex_01-03.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 3 | main() | ^~~~ 그렇습니다. 이것은 경고(warning)이지 오류(error)가 아닙니다. 따라..