본문 바로가기

전체 글86

신경망2 출력층 설계 기계학습은 분류와 회귀로 나뉜다. 분류는 데이터가 어느 클래스에 속하느냐는 문제이고 (주로 소프트맥스 함수 사용) 회귀는 입력 데이터에서 연속적인 수치를 예측하는 문제이다 (주로 항등 함수 사용). 항등 함수 입력 그대로 출력, 입력과 출력이 항상 같기 때문에 항등 함수 그림으로 표현하면 소프트맥스 함수 분류에서 사용하며 n은 출력층의 뉴런 수, yk는 그 중 k번째 출력을 뜻한다. 소프트맥스 함수의 분자는 입력 신호 ak의 지수함수, 분모는 모든 입력 신호의 지수 함수의 합으로 구성된다. 소프트맥스 함수를 그림으로 표현하면 이런식으로 나오게 되는데 소프트맥스 함수 수식의 분모에서 보면 출력층의 각 뉴런이 모든 입력 신호에서 영향을 받기 때문이다. 소프트맥스 함수는 구현시 주의해야 할 점이 .. 2020. 7. 7.
알고리즘 스터디 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr [1차] 비밀지도 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(.. 2020. 7. 7.
예외를 방출하지 않을 함수는 noexpect로 함수를 noexcept로 선언할 것인지 여부는 인터페이스 설계상 문제이다. 즉, 함수 호출자는 noexcept 여부에 의존할 수 있다는 것을 뜻한다. 예외를 방출하지 않음이 확실한 함수를 선언할 때 noexcept를 사용하지 않는 것은 인터페이스 명세가 허술함을 의미한다. 예외를 받게 되는 일이 없음을 약속하기 위한 표현법이다. int f(int x) throw();// C++98 버전 int f(int x) noexcept;// C++11 버전 실행 시점에서 예외가 f 바깥으로 나가게 되면 f의 에외 명세에 위반된다. C++98에서는 예외 명세가 위반되면 호출 스택이 f를 호출한 시점에 도달할 때까지 풀리며(unwind), 그 지점에서 몇 가지 동작이 취해진 후 종료된다(terminate). C++11.. 2020. 7. 7.
알고리즘 스터디 13 https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 문제 설명 다트 게임 카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single(S), Do.. 2020. 7. 6.
iterator보다는 const_iterator를 const_iterator는 const를 가리키는 포인터의 STL 버전이다. 반복자가 가리키는 것을 수정할 필요가 없을때에는 항상 const_iterator를 사용하는 것이 바람직하다. C++98까지는 삽입, 삭제 위치를 iterator로만 지정할 수 있었다. 왜곡된 방법을 사용해서라도 const_iterator를 얻어도 정작 삽입, 삭제에 사용할 수 없기 때문에 사용할 수가 없었다. 하지만 C++11부터는 컨테이너 멤버함수로 cbegin과 cend가 추가되었고, 이는 const_iterator를 돌려준다. C++11에서 const_iterator를 사용하는 방법은 다음과 같다. std::vector values; ... auto it = std::find(values.cbegin(), values.ce.. 2020. 7. 6.
알고리즘 스터디 12 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하.. 2020. 7. 5.