본문 바로가기

Python19

Cost(비용) 최소의 구체적인 방법 - 텐서플로우(tensorflow) 기존 가설함수와 Cost함수 간략화된 가설함수와 Cost함수 b를생략. 추후에 W를 매트릭스로 사용하며 b가 안으로 들어감. 이는 추후에 서술 Cost Function의 변화 기존 코스트 함수가 아래와 같았다면 다음과 같이 변경 cost의 값은 절반이 되지만 특성은 변하지 않음 costfunction을 미분할때에 뒤의 지수가 앞으로 나오는 과정에서 식을 간략화 할수 있음 Gradient descent알고리즘의 미분과정 위와같이 W에 대한 편미분 진행시 Cost Function의 지수부분이 사라짐. 여기서 α값은 learning_rate를 의미함. Gradient descent 알고리즘의 사용제한 Cost함수가 Convex function일때에 한정적으로 사용. Convex function란 Local m.. 2020. 5. 21.
Parameter(W,b) Update - 텐서플로우(tensorflow) 전체코드(Full Code) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import tensorflow as tf learning_rate = 0.01 x_data = [1, 2, 3, 4, 5] y_data = [1, 2, 3, 4, 5] W = tf.Variable(3.0) b = tf.Variable(1.0) for i in range(100): with tf.GradientTape() as tape: hypo = W * x_data + b cost = tf.reduce_mean(tf.square(hypo - y_data)) W_grad, b_grad = tape.gradient(cost, [W,b]) W.assign_sub(learning_rate .. 2020. 5. 21.
조건부 실행 (흐름제어) if if는 조건문이 참일때만 body를 실행하는 예약어로 매우 자주 사용하게 됩니다. 조건문 뒤에는 콜론 : 이 쓰이고 오는 body부분은 들여쓰기 해줍니다. 뒤오 오는 조건에 구에받지 않아야할 코드는 다시 내어쓰기를 해줍니다. 예시) if 조건문: # body 시작 코드~~~~ ~~~~ 코드 # body 끝 x = 5 if x < 10: print('smaller') print('Fin') # 출력결과 # # smaller # Fin x = 15 if x < 10: print('smaller') print('Fin') # 출력결과 # # Fin 조건문 True 나 False를 (이를 bool타입이라고 한다) 사용하거나 연산결과가 bool타입인(True나 False가 연산결과로 나오는) 연산을 사용한다.. 2020. 5. 21.
연산자, 타입 연산자 수학(math)에서의 연산자와 매우 비슷 수학에서 쓰는 기호 전체를 사용할수 없기 때문에 60~70년대 키보드에 있었던 것을 차용해서 만듬 + 더하기 - 빼기 * 곱하기 / 나누기 ** 제곱 % 나머지 // 몫 연산자의 계산순서 + 나 - 가 아닌 다른 연산자를 먼저 계산후 연산. 두 연산(+,-)을 제외한 연산이 두개 이상 있을경우 먼저 등장하는 순서로 계산. 괄호 안의 연산을 먼저 수행. 계산 우선순위 1 + (2 ** 3)/ 4 * 5 1 + (8 / 4) * 5 1 + (2 * 5) 1 + 10 11 괄호 제곱 곱하기, 나누기 연산 더하기, 빼기 연산 왼쪽에서 오른쪽으로 진행 타입 Python의 기본 데이터 타입은 str(문자열) int(정수형) float(부동소수점) 등이 있음. 타입을 .. 2020. 5. 21.
상수,변수 상수 변하지 않기때문에 상수. 예)숫자 문자열 등등 22.7 5 'hello' 변수 메모리를 할당하고 이름을 지어 무언가를 넣을수 있다. 일반적으로는 하나의 값을 넣게 됩니다.(하나 이상의 값을 변수에 넣을수도 있습니다) a = 22.7 b = 'hello' 와 같은 대입문을 통하여 변수에 값을 넣을수 있다. 이것은 우리마음대로 변수이름을 a로 정하고 22.7이란 상수를 넣어준겁니다. (다른 표현으로는 변수 a가 22.7을 가르키고 있다 라고한다) x = 22.7 y = 5 x = 'hello' print(x,y) # hello 5 22.7이라는 숫자는 바뀔수가 없으나 x가 가르키는 곳은 달라질수가 있습니다. 그렇기에 변수라고 할수있죠. 변수 이름의 규칙 (Python) 변수이름 내에서 문자, 숫자, 언.. 2020. 5. 21.
키로그, 뷰어 프로그램 전체 코드 공유 ### co.la@kakao.com ### ### Pig_Cola ### from PyQt5 import QtWidgets, QtCore import sys,pickle,keyboard,time # 메인 프로그램 UI 및 슬롯 구축 class main(QtWidgets.QWidget): def __init__(self): super().__init__() self.setWindowFlag(QtCore.Qt.WindowMinimizeButtonHint,False) self.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint,False) self.setMinimumSize(178,45) self.pbt1 = QtWidgets.QPushButton('키로거', self) s.. 2020. 5. 20.
뷰어 프로그램 기능구현, 드래그 앤 드롭 사용 # 뷰어 프로그램 UI구축 class viewer(QtWidgets.QWidget): def __init__(self): super().__init__() self.tb = QtWidgets.QTextBrowser(self) self.setAcceptDrops(True) layout = QtWidgets.QGridLayout() layout.addWidget(self.tb) self.setLayout(layout) # 드래그 한 무언가가 올라왔을때 작동 # 무언가에 주소값이 없다면 거절 def dragEnterEvent(self, e): if e.mimeData().urls() == []: e.ignore() else: e.accept() # 드래그한 무언가가 놓아졌을때(드래그이벤트가 거절되지 않아야 작.. 2020. 5. 20.
keyboard라이브러리 수정 키입력시 기록되는 부분을 확인해보면 _keyboard_event 모듈이었습니다. keyboard의 라이브러리 폴더에 있네요. 기본상태의 모듈입니다. win_title이란 변수를 만들어주고 전에 준비한 구문을 def로 둘러 전달할 내용을 return해줍니다. 새로 기록후 다시한번 디버깅을 해서 데이터를 확인해보니 오브젝트 들에게 win_title이라는 변수가 존재함을 확인할수 있었습니다. 이것을 뷰어에서 활요하면 좋을듯합니다. 2020. 5. 20.
활성화된 창이름,프로세스 이름 얻어오기 활성화 된 창의 핸들을 얻어와 창 이름과 프로세스 이름을 출력하는 간단한 구문. 이것을 키보드이벤트의 초기화 함수에 변형후 넣어주면 될거같다. import win32gui, win32process, psutil handle = win32gui.GetForegroundWindow() wintitle = win32gui.GetWindowText(handle) tid, pid = win32process.GetWindowThreadProcessId(handle) process_name = psutil.Process(pid).name() print(wintitle,process_name) 현재 활성화된 창의 handle값을 얻어온후 창이름과 프로세스 이름을 가져온다. 창이름은 핸들로 접근이 가능하며 프로세스 이름.. 2020. 5. 20.