일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Gram matrix
- 오일러 프로젝트
- Autoencoder
- neural network
- 소수
- bayesian
- 합성곱 신경망
- 소인수분해
- Python
- 수달
- 역전파법
- c#
- A Neural Algorithm of Artistic Style
- mnist
- backpropagation
- 오토인코더
- 신경망
- 전처리
- 베이지안
- 딥러닝
- SQL
- Convolutional Neural Network
- CNN
- 냥코 센세
- 히토요시
- project euler
- 비샤몬당
- 자전거 여행
- deep learning
- 역전파
- Today
- Total
목록Python (54)
통계, IT, AI
1. mutable vs immutable 파이썬의 오브젝트를 나누는 기준의 하나는 mutable 여부이다. mutable하지 않은 오브젝트는 immutable하다고 한다. mutable 오브젝트는 내용을 수정할 수 있고 immutable한 오브젝트는 그럴 수 없다. mutable한 오브젝트의 대표적인 예는 리스트list 등이 있고 immutable한 오브젝트는 튜플tuple, 문자열string 등이 있다. 리스트와 같은 mutable 오브젝트는 다음과 같이 내용을 수정할 수 있다. lst_1 = [1, 2, 3, 4] lst_1[0] = 100 print(lst_1) # [100, 2, 3, 4] 그런데 아래의 코드는 어떻게 작동 하는 것일까? immutable한 오브젝트는 '내용을 수정 할 수 없다'..
1. 개요 TensorFlow를 이용한 모델링은 오랜 시간이 걸릴 수 있다. 경우에 따라서는 한번의 Session으로 학습을 마치기 어려운 경우도 있다. 본 포스팅에서는 학습의 결과인 TensorFlow의 Variable을 저장하고 복원하는 방법을 살펴본다. 아래의 내용은 Udacity에서 발췌하였으며 사용된 코드는 이곳에서 확인할 수 있다. python은 3.5.3, TensorFlow는 1.3.0 사용한다. 2. Saving and Loading Variables 아래는 weights와 bias라는 Variable을 만들고 저장하는 예시이다. # -*- coding: utf-8 -*- import tensorflow as tf # Set random seed to make equal result tf..
1. 개요 나이브 베이즈는 베이즈 정리를 사용하는 확률 분류기의 일종으로 특성들 사이에 독립을 가정한다. 이론이 어렵지 않고 구현이 간단하며 "나이브"한 가정에도 불구하고 여러 복잡한 상황에서 잘 작동하기 때문에 다양한 분야에서 사용되고 있다. 독립변수에 따라 여러가지 모습을 가지지만 이번 포스팅에서는 어떤 메시지가 스팸(spam)인지 또는 정상(ham)인지 분류하는 문제만 고려한다. 2장에서는 나이브 베이즈 분류를 이해하기 위한 배경 지식을 간단하게 훑어보고 3장에서 나이브 베이즈가 어떤 식으로 작동하는지 살펴본다. 4장에서는 나이브 베이즈를 실제 데이터에 적용하여 텍스트 메시지를 분류해본다. 2. 배경 지식 2.1. 베이지안 통계 베이지안 통계에서는 모수 \(\theta\)가 고정된 값을 가지지 않고..
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 문서를 암호화하기 위하여 XOR 연산을 사용할 수 있다. 예를 들어 A는 아스키코드로 65인데 42와 XOR 연산을 하여 107로 암호화할 수 있다. 여기서 42는 키의 역할을 하며 107과 42를 XOR 연산을 하면 65로 복호화가 된다. 복호화가 불가능하게 하기 위해서는 암호화하는 문장과 같은 길이의 무작위 키로 암호화하면 된다. 하지만 이 방법은 실용적이지 못하기 때문에 기억하기 적당한 길이의 키를 전체 메시지에 대하여 돌아가며 적용한다. 문제에서 주어진 암호문의 키는 영어 소문자 3개라는 것이 알려져 있다. 그 키로 암호문을 해독하고 아스키코드 값의 합을 구하는 것이 문제의 목표이다. 단, 본래의 메시지는 일반적인 영어 문장이다. 2. 구현 26개..
1. 개요 문제는 이곳에서 확인할 수 있다. 아래와 같이 1부터 자연수를 반시계 방향으로 늘어놓자. 37 36 35 34 33 32 31 38 17 16 15 14 13 30 39 18 5 4 3 12 29 40 19 6 1 2 11 28 41 20 7 8 9 10 27 42 21 22 23 24 25 26 43 44 45 46 47 48 49 흥미롭게도 대각 방향에 있는 수 13개는 1을 제외하고 모두 홀수이다. 또한 그 수들 가운데 8개는 소수이다. 위의 예시에서 그 비율은 \(8/13 \approx 62\%\)이다. 처음으로 그 비율이 10%보다 작아졌을 때 변의 길이를 구하는 것이 문제의 목표이다. 2. 구현 중앙의 1을 \(n=1\)이라고 하면 오른쪽 아래 방향의 수는 모두 \((2n-1)^2\..
1. 개요 문제는 이곳에서 확인할 수 있다. \(\sqrt{2}\)는 다음과 같이 표현할 수 있다. $$\sqrt{2}=1+1/(2+1/(2+1/(2+\cdots)))= 1.414213\cdots $$ 4번째까지의 항을 살펴보면 다음과 같다. \(1 + 1/2 = 3/2 \) \(1 + 1/(2 + 1/2) = 7/5 \) \(1 + 1/(2 + 1/(2 + 1/2)) = 17/12 \) \(1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 \) 8번째 항은 \(1393/985\)이며, 이때 처음으로 분자의 자리수가 분모의 자리수보다 크게 된다. 1,000번째 항 내에서 분자의 자리수가 분모의 자리수보다 큰 항의 수를 구하는 것이 문제의 목표이다. 2. 구현 각 항에서 1을 제외하고..
1. 55번 개요 문제는 이곳에서 확인할 수 있다. 47을 거꾸로 한 뒤 서로 더하면, 47+74=121이 되며 121은 회문자 palindrome이다. 349는 이 과정을 세번을 거치면 7337이 되어 회문자가 된다. 증명된 것은 아니지만, 어떤 숫자들은 거꾸로 한뒤 서로 더하는 과정을 아무리 거쳐도 회문자가 되지 않는다고 추측된다. 이러한 숫자들을 Lychrel 수라고 한다. 10,000보다 작은 Lycherel 수의 개수를 구하는 것이 문제의 목표이다. 단, 50번 안에 회문자가 되지 않으면 그 수는 Lycherel 수라고 가정한다.2. 55번 구현 # -*- coding: utf-8 -*- # Project Euler 55 def reverse_n(n): return int(str(n)[::-1]..
1. 개요 문제는 이곳에서 확인할 수 있다. 포커 게임에서 패의 순서는 다음과 같다. High Card: 모든 값이 다르고 적어도 하나의 모양이 다른 경우One Pair: 두 장이 같은 값을 가지는 경우 Two Pair: 두 개의 One Pair가 나오는 경우 Three of a Kind: 3장이 같은 값을 가지는 경우 Staight: 모든 카드의 값이 연속하는 경우 Flush: 모든 카드가 같은 모양인 경우 Full House: Three of a Kind와 One Pair가 나온 경우 Four of a Kind: 4장이 같은 값을 갖는 경우 Straight Flush: 모든 카드의 값이 연속하며 같은 모양인 경우 Royal Flush: Straight Flush이면서 가장 작은 값이 10인 경우 카드..
1. 개요 문제는 이곳에서 확인할 수 있다. 100만보다 큰 \(_nC_r\)의 개수를 구하는 것이 문제의 목표이다. 단, \(1
1. 개요 문제는 이곳에서 확인할 수 있다. \((x)\)를 양의 정수 \(x\)의 각 자리의 숫자라고 하자. \((x)=(2x)\)가 성립하는 \(x\) 중의 하나는 125874가 있다. \((x)=(2x)=(3x)=(4x)=(5x)=(6x)\)가 성립하는 최소 \(x\)를 찾는 것이 문제의 목표이다. 2. 구현 문제의 특성을 잘 살펴보면 확인해야 할 숫자를 많이 줄일 수 있다. 먼저 \((x)\) = \((6x)\)이므로 \(x\)는 반드시 1로 시작한다. 그렇지 않으면 자리수가 달리지기 때문이다. 또한 \(5x\)가 5의 배수이므로 마지막 수는 0 또는 5이다. 따라서 \((x)\)는 0 또는 5를 포함한다. 마찬가지로 \(2x\)가 2의 배수이므로 \((x)\)는 0, 2, 4, 6 또는 8을 포..