전체보기 106

[Android] - 라이브러리를 만들고 테스트해보기

들어가며 파이썬, 자바등의 많은 프로젝트에서는 이식성을 위한 코드의 집합인 패키지, 모듈이 있다. 당연히 안드로이드에도 이를 지원하는 AAR(Android Archive)가 존재한다. 공식 사이트에도 설명이 되어있지만 갱신되지 않거나 모호한 부분이 있어 차근차근 모듈을 만들고 테스트하는 방법에 대해서 알아보도록 하자. 안드로이드의 모듈은 코드뿐만 아니라 이미지, 텍스트 등의 데이터를 포함해서 부르기 때문에 여기선 라이브러리와 동일한 의미로 언급한다. 1. 새로운 모듈 만들기 우선 기존의 프로젝트에서 아래의 경로를 통해 새로운 모듈을 만든다. New Module을 클릭하면 여러가지 타입이 나오는데 간단한 AAR을 만들기 위해서 Android Library를 선택하고 next를 클릭한다. 다음에는 모듈이름과..

Android 2021.02.12

[Android] - Notification 알림을 사용해보자

들어가며 안드로이드의 가장 기본적인 알림을 사용해보자. 아마 프로젝트 하다가 어떻게 쓰는지 궁금한 사람들이 검색을 했을 테니 최대한 간결하게 코드를 통해 설명하겠다. 코드를 세세하게 찾아보고 싶은 사람은 android developers의 문서를 참조하기 바란다. 사용방법 1. Notification Channel만들기 각 어플리케이션에서 Notification알림을 실행하려면 우선 채널을 만들어야한다. 아래 코드를 복사해서 MainActivity에 추가하고 onCreate에서 해당 함수를 호출해주자 *채널명과 설명은 본인 어플리케이션에 맞게 설정해주자 private void createNotificationChannel() { // Create the NotificationChannel, but onl..

Android 2021.01.03

[Android] Context란? - 다른 액티비티의 변수,함수 호출

들어가며 안드로이드 코드를 작성하다보면 view를 다룰 때 꼭 한번 context를 parameter로 요청하는 경우가 있다. 그냥 단어만 알고있던 이것에 대해서 한 번 알아보고 어떤 쓸모가 있는지 알아보고 다른 인스턴스에 접근하는 방법을 탐구해보자. ( 인스턴스 접근방법을 알고 싶다면 맨 아래 문단을 참고하기 바랍니다. ) Context의 정의 위는 Android Developers에 게시된 문서의 정의부분이다. 읽어보니 안드로이드의 시스템 요소와 자원에 접근하기 위한 추상 클래스라고 한다. 문서를 조금더 찾아보니 Activity, Application, Service의 base class로 사용된다고 한다. 이를 알고 나니 기본적인 시스템 추상클래스라는 느낌을 알겠다. 용례 어플리케이션의 resour..

Android 2021.01.03

인공 신경망 with Keras - 3. 함수형 API로 복잡한 모델 만들기

들어가며 지난 시간까지 케라스의 Sequential API를 이용해서 간단한 선형 신경망을 만들어 회귀와 분류를 진행했습니다. 만약 여러개의 입력, 출력층을 만들고 싶거나 좀 더 복잡한 신경망을 만들고 싶다면 어떻게 해야할까요? 이번에는 함수형 API를 사용해서 이 문제를 해결해보겠습니다. 목차 1. 함수형 API란? 2. Wide & Deep 신경망 3. 여러개의 입력,출력층 1. 함수형 API란? 함수형 API는 말 그대로 코드에서 함수처럼 신경망 층을 다루는 API입니다. input_B = keras.layers.Input(shape=[6], name="deep_input") hidden1 = keras.layers.Dense(30, activation="relu")(input_B) 두 번째 줄을 ..

1. 완전탐색(Exhaustive Solving, Brute-Force) with 재귀함수

들어가며 이번 글에서는 문제를 해결하는 가장 단순한 방법인 완전탐색 또는 Brute-Force알고리즘에 대해서 알아보도록 하겠습니다. 목차 정의 사용개념(재귀호출) 재귀 호출을 완전탐색에 사용하는 방법 문제 예시 : Boggle Game 시간복잡도 분석 정의 Brute-Force는 직역하면 무식하게 풀기라는 의미입니다. 문제가 주어졌을 때 일어날 수 있는 모든 경우의 수를 계산해서 원하는 출력값을 얻는 것을 의미합니다. 모든 경우의 수를 탐색하므로 완전탐색(Exhaustive Solving)이라고도 불립니다. 이는 컴퓨팅 자원을 극심하게 소모하기 때문에 입력값이 작을 것으로 기대될때만 사용하는 것이 좋습니다. 간단하게 예를 들어보겠습니다. 열 명의 학생을 한 줄로 세우려고 하는데 서로 사이가 안 좋은 학..

인공 신경망 with Keras -2. 케라스로 Regression MLP(회귀 다층퍼셉트론) 구현하기

들어가며 지난 시간에는 케라스로 간단한 이미지 분류기 모델을 구축,훈련,평가 그리고 결과를 시각화하는 방법에 대해서 알아보았습니다. 이번 시간에는 케라스를 이용해서 회귀 다층퍼셉트론 모델을 만들어보겠습니다. 목차 1. Regression MLP 구현 방안 2. Sequential API를 이용해서 모델 구현 3. 시각화 1. Regression MLP 구현 방안 Regression MLP를 구현하는 방법은 이전 글에서 이미지 분류기 모델을 만들었다면 매우 간단히 해결할 수 있습니다. 회귀는 수치를 예상하는 것이므로 훈련전에 스케일링을 하고 모델의 출력층에서 활성화함수를 사용하지 않으면 쉽게 구현할 수 있습니다. Sequentail API를 이용해서 직접구현해보겠습니다. (Sequential API를 모른..

인공 신경망 with Keras -1. 케라스로 MLP(다층 퍼셉트론) 구현하기

들어가며 지난 글까지 인공 신경망과 학습 모델들에 대해서 알아보고 이를 사이킷런으로 구현해 보았습니다. 이번에는 google 의 tensorflow에서 지원하는 keras라이브러리를 사용해서 간편하게 신경망을 구현, 학습, 그리고 평가하는 방법에 대해서 알아보겠습니다. 목차 1. 텐서플로2 설치 2. Sequential API로 이미지 분류기 구현하기 1. 데이터 다운로드 2. Sequential Model 구축 3. 모델 알아보기 4. 모델 컴파일하기 5.모델 학습하기 6. 학습 시각화하기 7. 테스트 데이터로 평가하기 8. 예측하기 Tensorflow 2.0 설치하기 tensorflow 2.0을 설치하는 환경이 여러 가지가 있으므로 이는 tensorflow.org에 게재된 공식문서를 참조하는 것이 좋..

머신러닝 모델 - 5. 소프트맥스 회귀(Softmax Regression)

들어가며 지난 글에서는 로지스틱 함수를 사용하여 두 개의 클래스를 구별하는 이진 분류기에 대해서 다루어보았습니다. 이번에는 여러개의 클래스를 한 번에 분류할 수 있는 소프트맥스 회귀에 대해서 알아보도록 하겠습니다. 목차 1. 소프트맥스의 정의 2. 비용함수(크로스 엔트로피 비용 함수) 3. 코드 구현 1. 소프트맥스의 정의 소프트맥스 회귀 또는 다항 로지시틱 회귀는 소프트 맥스 함수(softmax function)을 사용하여 각 클래스일 확률을 추정하여 이 중 가장 높은 확률을 가진 클래스를 선택하는 것입니다. 이를 쉽게 알아보겠습니다. 우선 각 클래스는 자신만의 파라미터 벡터가 존재하며 새로운 샘플이 입력되었을 경우 각 클래스의 벡터와 샘플의 곱을 계산하여 이 중 가장 큰값을 선택하는 방식입니다. 따라..

Machine Learning 2020.04.23

머신러닝 모델 - 4. 로지스틱 회귀 (Logistic Regression)

들어가며 지난 시간에는 선형회귀에 이어 다항회귀에 대해서 알아보았습니다. 이번에는 회귀를 통해서 분류(Clustering)을 진행할 수 있는 알고리즘인 Logistic Regression 에 대해서 알아보도록 하겠습니다. 목차 1. Logistic Regression 1.1 확률추정 1.2 훈련과 비용함수 1.3 결정경계 1. Logistic Regression 로지스틱 회귀란 기본적으로 회귀 알고리즘을 사용하지만 마지막 결과값에서 로지스틱 함수를 통해서 확률을 계산하고 이를 토대로 분류를 진행하는 알고리즘입니다. 위 수식을 보면 파라미터와 샘플의 곱까지는 기존의 회귀와 동일하지만 이를 감싸는 새로운 함수를 볼 수 있습니다. 이것이 바로 로지스틱 함수입니다. 로지스틱 함수는 변수를 입력할 경우 이를 0~..

Machine Learning 2020.04.20

머신러닝 모델 - 3.정규화(regularization, 과대적합 완화 )

들어가며 지난글에서는 학습곡선을 통해서 모델 학습이 과대적합인지 과소적합인지 파악하여 모델을 결정하는방법에 대해서 알아보았습니다. 과소적합인 경우에는 더 좋은 모델과 하이퍼파라미터를 선택하면되지만 과대적합인 경우에는 어떻게 해결해야할까요? 이번 글에서는 비용함수에 변수를 추가하여 모델을 규제하여 과대적합을 방지하는 방법에 대해서 알아보겠습니다. 목차 1. 과대적합 발생이유 2. 과대적합 해소방법 1.릿지 회귀(티호노프 규제) 2.라쏘 회귀(Lasso Regression) 3.엘라스틱넷 4.조기종료 3.1 과대적합 발생이유 과대적합이 발생하는 이유는 각 파라미터 변수들의 절댓값이 크게 설정되기 때문입니다. 아래 그림은 이후에 설명할 규제의 정도에 따른 학습결과인데 미리 이를 예로 설명하겠습니다. 오른쪽 그..

Machine Learning 2020.04.17