분류 전체보기 92

CodeUp 1091 : 수 나열하기3 - python

파이썬으로 코딩테스트를 준비하며, 코드업에 있는 100문제를 풀어보았다. 문제를 풀어보며 파이썬의 기초에 대해 다시 한 번 정리할 수 있었다. 문제 ) 예를 들어 1 -1 3 -5 11 -21 43 ... 은 1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만든 수열이다. 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때, n번째 수를 출력하는 프로그램을 만들어보자. 입력) a, m , d, n * 예시 > 1 -2 1 8 출력) n 번째 수* 예시 > -85 나의 풀이 방법 ) 먼저 예시를 보고 첫째항을 a 라고 하고 둘째 셋째, 넷째항은 각각 a2, a3, a4 이라고 가정했다. 그리고 식을 차례로 써보았다. a= 1 a2= 1 * ..

인공지능 전이학습

지도학습은 학습데이터(Training data) 와 검증데이터(validation data) 그리고 테스트데이터(test data) 로 구성되어 있다. 학습데이터를 통해 특징을 추출하고 model을 만들고 검증데이터로 모델이 잘 만들어졌는지 확인할 수 있다. 그리고 최종적으로 이 모델이 잘 만들어진 모델인지 테스트 데이터를 통해 그결과를 확인할 수 있다.이때, 뉴스데이터를 예로 들자면 뉴스의 카테고리(정치,문화,경제 등등..) 가 없는 뉴스기사를 데이터로 이용하고 이를 분류한다면 예측률이 매우 안 좋다. 반면 카테고리가 있는 뉴스기사를 데이터로 이용한다면 예측률이 좋다. 이 둘(카테고리가 있는 뉴스+ 카테고리가 없는 뉴스 데이터) 을 섞으면? 더 좋다! 그렇다면 이때 카테고리가 있는 뉴스와 없는 뉴스 한..

신경망의 딥러닝의 여러가지 문제

DNN 이란 ? MLP (다층 퍼셉트론) 에서 은닉층의 개수를 증가시킨 것이다. (MLP 에서는 2-3개의 은닉층 ) deep 이라는 용어가 은닉층이 깊다는 것을 뜻한다. (여러개의 은닉층 , CPU 로는 버겁고 GPU환경에서 구동해야됨 ) 기존의 모델을 학습시킬 때는 특징 추출 과정을 거쳐서 데이터 전처리, 가공을 통해 데이터를 추출한 후, 학습데이터로 패턴분류기를 훈련했다. 그러나 딥러닝에서는 특징 추출 과정이 필요가 없다! 왜냐하면 스스로 특징을 추출하기 때문!!!! * 딥러닝에서는 특징을 추출하지 않아도 Input data에 들어간 데이터를 은닉층에서 한층 한층 가면서 필요한 정보들을 스스로 추출해 낸다. 앞쪽의 은닉층에서는 엣지처럼 저급 특징을 추출하고 뒤쪽의 은닉층은 코너와 같은 고급 특징을 ..

MLP 신경망 (Multi-Layer Perceptron)

MLP 란 여러 개의 퍼셉트론 뉴런을 여러 층으로 쌓은 다층신경망 구조입력층과 출력층 사이에 하나 이상의 은닉층을 가지고 있는 신경망이다.인접한 두 층의 뉴런간에는 완전 연결 => fully connected 된다. 다층 뉴런은 왜 필요할까? 복잡한 패턴 분류를 위해서는 입출력 간의 복잡한 변환 구조가 필요하다. 사용하는 뉴런의 수를 늘리고 층을 추가하여 복잡한 구조의 의사결정 경계를 생성할 수 있다. 단일뉴런 ( 퍼셉트론)으로는 선형분리 가능한 경계선만 생성가능함. 두개의 뉴런을 결합함으로써 XOR 과 같은 비선형 분리가 가능한 결정선을 생성할 수 있다. 뉴런을 추가함으로써 다각형 모양의 경계선을 생성할 수 있다. => 복잡한 데이터의 분류가 가능해진다! , 일반적으로 다층 신경망은 (MLP 는) 2-..

안드로이드 레이아웃 : Relative Layout

Relative Layout은 상대적인 레이아웃으로 자식 뷰 또는 부모 뷰 간의 관계에 따라 배치를 적용하는 레이아웃이다. 레이아웃 계층 구조를 평면으로 유지하여 성능을 개선하므로 UI 설계에 유용한 유틸리티이다. Relative Layout 으로 구현하기 전에는 계속 여러 개 중첩된 LinearLayout 을 이용하였는데, RelativeLayout 을 사용한다면 더 간단하게 할 수 있는 것 같았다. Linear Layout 을 여러개 써서 계층이 깊어지는 것을 막을 수 있다. 적은 양의 코드로 뷰의 자유로운 배치를 위해 필요하다. 먼저 RelativeLayout 을 사용한다면 하위 뷰, 상위뷰, 서로 다른뷰를 ID로 구분하고 상대적인 위치를 지정할 수 있다. RelativeLayout 에는 많은 레이..

프로젝트 관리와 계획

프로젝트를 진행할 때 작업 수행에 필요한 여러가지 자원, 인력, 비용, 재료, 기술 등을 가장 효과적으로 사용하여 프로젝트의 목표를 달성해야한다. 하지만 개발 대상은 눈에 보이지 않아 진행 상황을 판단하기 어렵고 조직마다 프로세스도 다를 뿐 아니라 기술 발전이 매우 빠르기 때문에 '프로젝트의 관리' 가 필요하다. 프로젝트를 관리하기 위한 활동은 4가지로 분류할 수 있다. 계획, 조직, 모니터링, 조정 1. 먼저 프로젝트를 시작하면, 목표를 세우고 가치와 위험을 이해해야한다. 지속 가능성이 있는지 , 기술적인 어려움, 불확정성이 있는지 등등 그렇다면 이러한 가치는 어떻게 평가할까? 가치를 평가하는 방법에는 5가지가 있다. 1) 투자 회수 기간 : 투자금과 같은 금액을 벌어들이는데 걸리는 기간이 얼마일지 2..

Hello World!/공부 2020.11.13

리팩토링이란?

프로그램은 오늘 당장 기능이 실행되는 것도 중요하지만, 내일을 대비한 코딩을 해야한다. 리팩토링이란 이미 존재하는 코드를 안전하게 개선시키는 기술이다. 코딩 스타일 뿐만 아니라 성능, 구조 등을 개선시키는 과정으로 가독성을 높이고 유지보수를 편하게 하기 위한 것이다. 리팩토링을 하면, 1) 기존의 코드를 보다 효율적이고 통제된 방법으로 점진적으로 재구성 할 수 있다. 2) 리팩토링 후 바로 test 과정을 거쳐 시스템의 신뢰도가 향상된다. 3) SW를 보다 이해와 수정이 쉽게 만든다. 4) 겉으로 보이는 동작의 변화 없이 내부 구조를 변경한다. 리팩토링의 목적은, 1) 디자인 개선 2) 이해 쉽게 만듦 3) 버그 찾기 쉽게 도와줌 4) 빠른 프로그래밍을 가능하게 함 리팩토링의 예를 들자면 반복 사용되는 ..

Hello World!/공부 2020.11.13

안드로이드에 파이어베이스 연동하기

파이어베이스는 구글에서 제공하는 Paas 형식 클라우드 서비스로 앱개발을 빠르게 할 수 있도록 도와준다.파이어베이스에서는 데이터베이스, 인증, 스토리지 등 많은 것들을 제공한다. 안드로이드에 파이어베이스를 연동하여 간단하게 DB를 구현해보려고 한다. 실시간 데이터베이스는 기존에 데이터베이스 언어 SQL 이 아닌 NoSQL 형식의 DB 다. SQL 에 비해 NoSQL 을 사용하면 빠르게 반응할 수 있다. JSON 형식으로 저장되고 DataSnapshot 객체 형태로 가져온다. 복잡한 백엔드를 쉽게 도와주는 파이어베이스는 프론트엔드 개발자나 포트폴리오를 만드는데 사용하면 도움이 될듯하다!순서로 간단하게 만들 수 있다 ! 만드는데 10분도 안 걸린다 1. Firebase 프로젝트 생성 firebase.goog..