일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- backpropagation
- 역전파법
- 역전파
- c#
- Gram matrix
- 소인수분해
- 냥코 센세
- 오토인코더
- 딥러닝
- 베이지안
- 수달
- neural network
- Python
- Autoencoder
- 신경망
- 전처리
- SQL
- 합성곱 신경망
- 자전거 여행
- bayesian
- 히토요시
- project euler
- 비샤몬당
- deep learning
- CNN
- 소수
- Convolutional Neural Network
- mnist
- A Neural Algorithm of Artistic Style
- 오일러 프로젝트
- Today
- Total
목록IT (69)
통계, IT, AI
문제는 이곳에서 확인할 수 있다. 모든 square root는 주기를 갖는 분수 꼴로 나타낼 수 있다고 한다. 문제의 예시와 같이 square root의 주기를 반환하는 함수를 작성하여 문제를 풀었지만 주석의 why? 부분은 왜 그것이 보장되는지 모르겠다.import mathdef f(k, a, b): ''' b/(sqrt(k) - a) to C + (sqrt(k) - A)/B return A, B, C ''' d = (k - a ** 2)/b assert int(d) == d # why? d = int(d) _a = [_a for _a in range(math.ceil(math.sqrt(k) + a - d), math.floo..
문제는 이곳에서 확인할 수 있다. \(16807=7^5\)이며 5자리 숫자이다. 이와 같이 어떤 수의 길이가 n이면서 n승의 형태로 나타낼 수 있는 양의 정수의 개수를 찾아야 한다. 문제의 조건에서 \(10^n\)은 \(n+1\)자리수가 되어 체크할 필요가 없음을 알 수 있다. import itertools ans = 0 for k in range(1, 10): for n in itertools.count(1): if len(str(k ** n)) == n: ans += 1 elif len(str(k ** n)) < n: break print(ans) 답은 49이다.
문제는 이곳에서 확인할 수 있다. 문제의 조건에서 순열에 속하는 모든 수는 같은 자리의 수임을 알 수 있다. 따라서 n을 1부터 늘려가면서 세제곱을 구해가면서 자리수가 달라질때 체크하면 된다. import collections cubic_nums = collections.defaultdict(list) digit_len, n = 1, 1 target_perm_len = 5 while True: cubic_num = str(n ** 3) _len = len(cubic_num) if _len != digit_len: res = [min(v) for v in cubic_nums.values() if len(v) == target_perm_len] if len(res) > 0: print(min(res)) br..
문제는 이곳에서 확인할 수 있다. 계산을 해보니 4자리의 polygonal number는 각각 100여개가 채 되지 않았다. 또한 3부터 8까지의 숫자를 나열하는 개수도 많지 않다. 이 정도면 brute force로도 해결이 가능할 것 같다. import pandas as pd import itertools import functools def p(k, n): if k == 3: return n*(n+1)//2 if k == 4: return n*n if k == 5: return n*(3*n-1)//2 if k == 6: return n*(2*n-1) if k == 7: return n*(5*n-3)//2 if k == 8: return n*(3*n-2) p_num = dict() for k in ra..
문제는 이곳에서 확인할 수 있다. 어떤 소수 두개를 앞뒤로 합치면 그 수도 소수가 되는 경우가 있다. 예를 들면, 3과 7, 3과 11 등이 있다. 이를 연결되었다고 하자. 3, 7, 109 그리고 673은 두개의 원소를 뽑았을때 모두 연결되며, 원소의 개수가 4개인 집합 중 합이 가장 작다. 개수가 5인 집합 중 합이 가장 작은 것을 찾고 그 합을 구하는 것이 문제이다. 3부터 시작하여 소수 판별을 한 뒤, 새로 찾은 소수가 기존의 소수와 연결되는지 판단한다. 길이가 3인 집합이 만들기 위해서는, 연결되는 두 소수를 고른 뒤 모든 원소가 새로 찾은 소수와 연결되는 지 확인하면 된다. 예를 들어 새로 찾은 소수가 109라고 하자. 기존의 소수로 만들 수 있는 109와 연결된 소수는 {3, 109}, {7..
DB에서 조회결과가 없을 때, 빈 리스트가 아닌 디폴트값이 나오도록 하고 싶을 때가 있다. 물론 코딩으로 구현할 수도 있지만, 경우에 따라서는 쿼리만 사용하는 것이 더 간단하기도 하다. 다음과 같이 쿼리를 작성하면 조회 결과가 있을 때는 해당 결과를, 없을 때는 디폴트값으로 '%'를 한 줄 반환한다. 단, mariadb 기준이다. with tb_tmp as ( select 'reason_code' as cd, '0001' as val union all select 'reason_code' as cd, '0002' as val ) select t1.val from tb_tmp t1 where 1=1 and t1.cd = 'reason_code' union select nvl(t1.val, '%') from..
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. 개요 문제는 이곳에서 확인할 수 있다. 어떤 문서를 암호화하기 위하여 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\..