전체 글
-
[python] 8-puzzle problem (2) Heuristic, A*Python/파이썬 자료구조 알고리듬 2020. 11. 17. 23:25
https://comdoc.tistory.com/entry/python-8-puzzle-problem-1-BFS-DFS 앞서 우리는 맹목적 탐색의 한계를 경험했으니 그에 대한 대안을 찾아보자. 8 퍼즐을 자주 해보면 본인만의 풀이법이 생긴다. 본인의 경우 고등학교 때 연예인 사진을 이용한 퍼즐 게임을 만든 적 있고.. 번호가 연결된 블록끼리 회전을 하면서 필요한 블록을 채우거나 필요 없는 블록을 빼는 방식으로 퍼즐을 풀었던 기억이 있다. 사전에서 heuristic(휴리스틱)을 찾아보면 '체험에서 (스스로 발견하는)'이라는 뜻을 가지고 있다. 이렇게 heuristic 한 방법을 사용하는 탐색법을 heuristic search method(경험적 탐색법)라고 한다. 위키 백과에는 다음과 같이 설명되어 있다,..
-
[python] 8-puzzle problem (1) BFS, DFSPython/파이썬 자료구조 알고리듬 2020. 11. 16. 23:29
[파이썬] 8-퍼즐 문제 다음 그림과 같이 8개의 숫자와 빈칸을 이용해 숫자를 정렬하는 퍼즐을 말한다. 위 그림과는 달리 아래 모양으로 정렬하도록 하겠다. 빈칸은 0으로 표기. 1 2 3 4 5 6 7 8 0 맹목적 탐색법의 대표적인 두 가지 방법으로 맹목적 탐색의 문제점을 알아본다. (1) 너비 우선 탐색(BFS, Breadth-first search) 너비 우선 탐색: comdoc.tistory.com/entry/24-graph-width-first-search 최단 경로 찾기: comdoc.tistory.com/entry/25-그래프-최단-경로-찾기 비교적 잘 작동하는 코드지만, 탐색이 길어지면 에러가 발생한다. (본인의 PC에서는) marked의 원소가 181440개를 초과되면 에러가 발생한다. ..
-
2. 텔레그램(telegram) 봇(bot)에 날씨 기능을 추가하자Python/telegram-bot 2020. 11. 9. 13:00
기상청 크롤링, XML 파싱에 관한 글을 올린 적 있습니다. 크롤링에 대한 설명은 위 링크를 참고하십시오. datetime 기상청 RSS 데이터는 발표일을 기준으로 0일, 1일, 2일 까지의 데이터가 담겨 있습니다. 보기 좋게 출력하려면 발표일, 발표일 + 1일, 발표일 + 2일을 처리해야 하는데요. 날짜에 관련된 계산을 하려면 꽤나 복잡하기 때문에 기본 내장 라이브러리를 사용하는 게 편합니다. 파이썬에서 날짜에 관련된 계산을 할 때는 datetime의 timedelta를 이용합니다. 사용법은 다음과 같습니다. 모년 모월 모일에서 2일 후를 계산해야한다면 날짜가 담긴 datetime 객체를 만들어야 합니다. 직접 객체를 만들어도 됩니다만, 만약 년월일이 담긴 문자열이 있다면 strptime 메서드로 날짜..
-
1. 파이썬으로 텔레그램(telegram) 봇(bot) 만들기Python/telegram-bot 2020. 11. 8. 14:38
https://core.telegram.org/botshttps://core.telegram.org/bots/api스마트폰이나 PC에 텔레그램은 깔려 있겠죠?@botfather 을 검색합니다. 가장 위에 공식 마크가 있는 것이 진짜입니다. 클릭해봅시다.봇파더는 새로운 봇 계정을 만들고 기존 봇을 관리할 때 사용하는 봇입니다. 시작을 누릅시다. 저는 예전에 만들었기 때문에 다시 시작이 뜹니다. 여기서 /newbot를 클릭합니다. 봇의 이름을 고르라고 합니다. 간단히 mybot이라는 이름을 정했습니다. 겹쳐도 되는 이름입니다. username을 고르라고 합니다. 'bot'으로 끝나야 한다고 합니다. 겹치면 안 되는 이름입니다. (모자이크 처리했습니다.)적당한 이름을 골라주면 API 키가 나옵니다. (모자이크..
-
PyTouch 설치 오류잡다한 것들 2020. 11. 7. 22:41
ERROR: Could not find a version that satisfies the requirement torch==1.7.0+cpu (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2) ERROR: No matching distribution found for torch==1.7.0+cpu 파이썬 32비트에서는 파이토치가 작동되지 않는다. ~! 파이썬 3.9는 아직 지원하지 않는다. ImportError: numpy.core.multiarray failed to import 넘파이 1.19.4 -> 1.18.5 다운 그래이드로 해결 보통 최신 버전으로 업글로 해결하던데 반대로 해야할 경우도 있다.
-
2. 활성함수(Activation Function)잡다한 것들 2020. 11. 7. 17:14
1. 퍼셉트론에서 임계치(theta)를 넘기면 1, 아니면 0을 내보냈다. 이 부분을 활성(화) 함수라고 하는데, 활성함수는 여러 가지 있다. 0. 선형함수가 활성함수로 부적절한 이유 선형은 반복해도 최종값은 입력의 상수배이며, 이는 단층으로도 같은 효과를 낼 수 있다. 그래서 비선형 활성 함수를 쓴다. 1. 계단함수 import matplotlib.pyplot as plt import numpy as np def h(x): return np.array(x > 0) x = np.arange(-5, +5, 0.1) y = h(x) plt.plot(x, y) plt.show() 0 또는 1. 계단 모양. 그래서 계단 함수(step function)이라 한다. 2. 시그모이드 함수 f(x) = 1 / (1 +..
-
1. 퍼셉트론(perceptron)잡다한 것들 2020. 11. 6. 23:17
퍼셉트론(perceptron) 인공신경망의 한 종류 1957년에 코넬 항공 연구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트 (Frank Rosenblatt)에 의해 고안되었다. 각 노드의 '입력값'과 '가중값'의 곱을 모두 합한 값이 '임계값'보다 크면 결과값으로 1을 출력한다. 그렇지 않으면 결과값으로 0 (또는 -1)을 출력한다. 입력값을 x1, x2라 하고, 가중값을 w1, w2라 하고, 임계값을 theta라 하면 다음과 같은 함수를 만들수 있다. def perceptron(x1, x2): w1, w2, theta = .4, .4, .7 return 0 if x1 * w1 + x2 * w2