텐서플로우(TensorFlow) 아키텍쳐 및 Session
2019-03-16 00:00:00 +0000https://youtu.be/QNSuzvL6SeA 내용을 정리하였습니다
텐서플로우(TensorFlow) 아키텍쳐
- 텐서플로우란 대규모 분산 학습 및 추론을 위한 라이브러리
- 많은 기계학습 모델을 제공
- 크로스 플랫폼 라이브러리(C API가 아래에 존재하고 그 위에 다양한 프로그래밍 언어를 이용해 소스코드 작성 가능)
- 클라이언트는 컴퓨터 연산 과정을 데이터 플로우 그래프 형태로 표현
- Session을 이용해 한번의 그래프 실행 시작을 알릴 수 있음
- 분산된 마스터는 부분 그래프를 정리
- 작업자 서비스에 전달하기 전 그래프 조각으로 분리하고 분배함. 초기화
- 작업자 서비스는 하드웨어에게 커널 기능을 이용하는 그래프 작업의 실행을 관리
- 커널 기능은 개별적인 그래프 작업 처리
텐서플로우(TensorFlow) Session
- 아래 코드 실행 시 결과는 Tensor(“Add:0”, shape=(), dtype=float32)
- 텐서플로우의 기본 실행 단위는 텐서이기 때문이다.
- 일종의 다차원 배열의 객체, 식이라고 볼 수 있음
- constant 및 add는 그래프를 작성한 것이지 연산한 것이 아님
- session은 텐서 데이터를 넣어서 데이터 흐름이 이루어지도록 만드는 것
import tensorflow as tf
a = tf.constant(2.2)
b = tf.constant(4.2)
c = tf.add(a,b)
print(c)
# 실제 연산
sess = tf.Session()
sess.run(c)
텐서플로우(TensorFlow)상수, 변수, 함수
2019-03-16 00:00:00 +0000- https://youtu.be/JbrBKPm1QEo 의 내용을 요약하였습니다
텐서플로우(Tensorflow) 변수와 상수
- jupyter notebook 명령어로 GUI 환경에서 실습
- constant는 하나의 자료형을 반환
- session은 하나의 연산식을 실행시키는 객체
a = tf.constant(1)
b = tf.constant(2)
c = tf.add(a, b)
sess = tf.Session()
sess.run(c)
- 만약 그냥 c를 출력하면 Tensor 정보만 나온다. 왜냐하면 c는 Tesor 자료형일 뿐이기 때문이다.
print(c)
결과
Tensor("Add:0", shape=(), dtype=int32)
- 변수는 상수와 달리 Variable 함수를 사용한다
import tensorflow as tf
a = tf.Variable(5)
b = tf.Variable(3)
c = tf.multiply(a, b)
init= tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
sess.run(c)
- 변수이므로 다른 값을 넣을 수 있다
- 이 때 sess를 global_variables_initializer로 초기화 해줘야 한다
a = tf.Variable(15)
c = tf.multiply(a, b)
init = tf.global_variables_initializer()
sess.run(init)
sess.run(c)
텐서플로우(Tensorflow) 플레이스 홀더(Placeholder)
- 학습 데이터를 포함하는 변수
- 다른 텐서를 할당하기 위해 사용
- 실제로 값을 할당할 때는 피딩을 수행
- 텐서 자체가 다차원 배열과 같은 형태를 가지고 있어 플레이스 홀더로 사용할 값 또한 배열이 들어갈 수 있음
- 사용법
tf.placeholder(dtype, shape, name)
- dtype : 플레이스 홀더에 저장되는 자료형
- shape : 배열의 차원
- name : 플레이스 홀더의 이름
import tensorflow as tf
mathScore = [85, 99, 84, 97, 92]
englishScore = [59, 80, 84, 68, 77]
a = tf.placeholder(dtype=tf.float32)
b = tf.placeholder(dtype=tf.float32)
y = (a+b)/2
sess = tf.Session()
sess.run(y, feed_dict={a:mathScore, b:englishScore})
결과
array([72. , 89.5, 84. , 82.5, 84.5], dtype=float32)
텐서플로우(TensorFlow) 주요 함수
함수 | 설명 |
---|---|
tf.add | 덧셈을 수행 |
tf.subtract | 뺄셈을 수행 |
tf.multiply | 곱셈을 수행 |
tf.truediv | 나눗셈의 몫을 구함 |
tf.mod | 나눗셈의 나머지를 구함 |
tf.abs | 절대값을 구함 |
tf.negative | 음수를 반환 |
tf.sign | 부호를 반환(음수:-1 양수:1 0:0) |
tf.srquare | 제곱을 수행 |
tf.sqrt | 제곱근을 반환 |
tf.pow | 거듭제곱을 수행 |
tf.maximum | 더 큰 값을 반환 |
tf.minimum | 더 작은 값을 반환 |
tf.exp | 지수 값을 계산 |
tf.log | 로그 값을 계산 |
- Sorcecode
import tensorflow as tf
a = tf.constant(3)
b = tf.constant(5)
sess = tf.Session()
# 덧셈
c = tf.add(a,b)
sess.run(c)
# 뺄셈
c = tf.subtract(a,b)
sess.run(c)
# 곱셈
c = tf.multiply(a, b)
sess.run(c)
# 나눗셈 몫
c = tf.truediv(a, b)
sess.run(c)
# 나머지
c = tf.mod(b, a)
sess.run(c)
# 절대값
c = tf.abs(-a)
sess.run(c)
a = tf.constant(17.5)
b = tf.constant(5.0)
# 음수 반환
c = tf.negative(a)
sess.run(c)
# 부호 반환
c = tf.sign(a)
sess.run(-c)
# 제곱 함수
c = tf.square(a)
sess.run(c)
# 거듭 제곱, 너무 큰 값은 못구한다고 뜸
c = tf.pow(b, 2)
sess.run(c)
# 더 큰 값 확인
c = tf.maximum(a, b)
sess.run(c)
# 더 작은 값
c = tf.minimum(a, b)
sess.run(c)
# 지수 값
c = tf.exp(b)
sess.run(c)
머신러닝 기초
2019-03-15 00:00:00 +0000파이썬 텐서플로우 및 머신러닝
- https://www.youtube.com/watch?v=YK9PNTJ_aFA 머신러닝 내용 정리
파이썬 설치
- 구글에 python release for windows 검색
- 3.6.2버전 x86-64 executable 다운받고 Add Python 3.6 to PATH 체크해서 Path에 파이썬 추가
- 명령 프롬프트 열고 pip3 install tensorflow
- 아래 에러 발생 시 python -m을 붙인 명령어 실행
- No module named pip3 라는 에러가 뜨면 pip 사용
Fatal error in launcher: Unable to create process using '"c:\users\wori\appdata\local\programs\python\python37-32\python.exe" "C:\Users\wori\AppData\Local\Programs\Python\Python37-32\Scripts\pip3.exe" install tensorflow'
- python idle로 들어가서 메뉴에서 file-new 선택
- hello world 출력. 메뉴에서 Run-Run Module
import tensorflow as tf
hello = tf.constant('Hello World!')
sess = tf.Session()
print(sess.run(hello))
- 출력 결과. b는 byte 문자형이라는 뜻
b'Hello World!'
선형 회귀
- 변수 사이의 선형적인 관계(직선적)를 모델링한 것
- 일을 할 수록 매출이 올라간다. 그래프를 그려보면 직선이다. 이것을 직선적인 관계라고 한다, 일상에 많은 현상들이 선형적
- 이러한 선형적인 관계에 적용하는 대표적인 기계 학습 이론이 선형 회귀
- 학습을 시킨다 => 주어진 데이터를 학습시켜서 가장 합리적인 ‘직선’을 찾아낸 것. 데이터 3개 이상일 때 의미가 있음
- H(x) = Wx + b
- 하나의 일차 방정식을 이용해 직선을 표현.(W는 기울기 b는 절편)
- 가설을 수정해 나가면서 ‘그나마’ 가장 합리적인 식을 찾아냄
- 즉 선형 회귀란 주어진 데이터를 이용해 일차 방정식을 수정해 나가는 것
비용
- 가설이 얼마나 정확한 지 판단하는 기준
- 비용 함수 (예측 값 - 실제 값)2의 평균
- 현재의 W, b 값과 데이터를 이용하면 비용 함수를 구할 수 있음. 비용이 적을 수록 좋다.(음수값 x)
경사하강
- 경사 하강을 이용해 합리적인 식을 도출
- H(x) = Wx
- 비용 함수는 (Wx - y)2
- 그래프를 그려보면 경사를 타고 내려갔다가 다시 올라가는 곡선이 그려짐. x축을 W라고 생각하면 됨
- 미분은 기울기를 구하기 위해 사용하는 개념. 수평일수록 좋은 식
- 텐서플로우는 경사 하강 라이브러리 제공
한글 리스트 오름차순, 내림차순
2019-03-12 00:00:00 +0000한글 문자열 오름차순, 내림차순 정렬
- Arrays.sort를 이용하여 오름차순 정렬
- 오름차순 된 배열을 리스트로 변경 후 Collections.reverse 함수로 내림차순 정렬
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 문자열 배열 정렬(가나다 순으로 소탕)
String s[] = {"오렌지", "키위", "바나나", "메론", "가나"};
Arrays.sort(s); // 오름차순
System.out.println("**** 오름차순 ****");
for(int i = 0; i < s.length; ++i) {
System.out.println(s[i]);
}
// 배열을 List로 변환
List<String> list = Arrays.asList(s);
// 리스트 뒤집어 주기
Collections.reverse(list);
System.out.println("**** 내림차순 ****");
for(int i = 0; i < s.length; ++i) {
System.out.println(s[i]);
}
}
}
연속된 글자의 갯수 출력
2019-03-11 00:00:00 +0000문제
연속된 글자의 갯수 출력 제시된 글자 String str = “aabbcccd”;
출력 a2b2c3d1
Source
public class main {
public static void main(String[] args) {
String str = "aabbcccd";
int size = str.length();
String save = "";
char current = str.charAt(0);
int currentCount = 0;
for(int i = 0; i < size; ++i) {
if(current == str.charAt(i)) {
++currentCount;
}else {
// 같지 않으면 출력
save += current;
save += currentCount;
if(i + 1 >= size) {
current = str.charAt(i);
}else {
current = str.charAt(i+1);
}
currentCount = 1;
}
}
save += current;
save += currentCount;
// 마지막에 출력
System.out.println(save);
}
}
Posts
Interceptor(인터셉터)
Android Studio Install
계층형 게시판
VirtualBox Ubuntu 18.04.2 LTS
TransactionAwareDataSourceProxy Error
Java Coding Conventions
Java Long과 long의 차이
Mybatis 객체 안에 객체 매핑
JavaConfig mariadb 연결
DataTable
관리자 페이지
MappingJackson2JsonView
Spring Javaconfig
게시판 만들기-제품 등록
게시판 만들기-제품 페이지 제작
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
footer 하단에 고정시키기
bootstrap4 사용법
Spring 데이터 검증 @Valid, BindingResult
brackets 실시간 미리보기
Spring 기본설정(pom.xml, web.xml, encoding)
Vue.js computed, methods, watch
javascript onkeyup
Maria DB Incorrect string value Error
javascript 암호화(md5, base64)
Vue.js template
Vue.js 소개
Nexacro 설명
ControllerAdvice
Batch
html 페이지 로딩 순서
소수구하기(PrimeNumber)
최소공배수,최대공약수
Stream
Lambda(람다식)
inner class(내부 클래스)
final 키워드
file upload
파이썬 빅 데이터 K-평균(K-means)
아나콘다(Anaconda), 주피터 개발환경 세팅
텐서플로우(TensorFlow) 아키텍쳐 및 Session
텐서플로우(TensorFlow)상수, 변수, 함수
머신러닝 기초
한글 리스트 오름차순, 내림차순
연속된 글자의 갯수 출력
java spring5 프로젝트 설정
restController
spring 세팅 및 기본설정
mybatis trim
jquery datepicker
ajax로 데이터 전달/응답 받는법
mybatis error
mybatis 게시판 만들기 순서
Java Jsp Mybatis Dynamic Query
mybatis
git 소개
node.js 개발환경 구축
node.js 기본 내장 모듈
node.js의 전역 객체
node.js http module
node.js event
jdbc
자바빈
jsp, servlet 정리
java null object pattern
다음지도 key 등록(kakao map)
공공 데이터 open api
facebook login api
sourcetree 사용법
JavaScript event3
JavaScript jquery
JavaScript dom
JavaScript ajax
JavaScript 이벤트2
JavaScript 캡슐화
JavaScript Array,내장객체
JavaScript var
JavaScript 객체,생성자
JavaScript 함수,클로저
JavaScript Event
javascript eclipse 자동완성(with tern)
CSS position
HTML5,CSS 선택자
자바 시간 측정
git,eclipse 연동
HTML 기초 정리
Eclipse Web 환경세팅
피보나치의 수
Oracle 반복문,커서,예외,저장 서브프로그램
Oracle PL/SQL
Oracle 다중쿼리(Multiple row query)
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
Oracle JOIN 정리
Oracle DDL, DML 정리
Oracle 문자열 함수 정리
Oracle 숫자,날짜,자료형 변환 함수 정리
Oracle 제약조건 정리
Oracle 기초 쿼리 정리
문제2775
DFS
junit
json
algorithmus basic
circular queue(원형큐)
binary search(이진탐색)
port forwarding(포트포워딩)
kakao chatbot(카카오 챗봇)
java io
sort comparable, comparator
Unresolved compilation problem
ArrayList, HashMap
Regular(정규표현식)
Enum Class
String Function
refactoring 이란(상수,제어플래그,assert)
reference,abstract 정리
FileNotFoundException Solve
static
Thread Synchronization(스레드동기화,원자성)
Java Exception(예외처리)
Java 생성자, this, super
roomnum
BeeHouse
Git Reset, Revert
Git Log
Array
stack
pyramid draw
Star Draw(별 그리기4)
Star Draw(별 그리기3)
Star Draw(별 그리기2)
Star Draw(별 그리기1)
Loop(While, For)
자바 데이터 타입, 데이터 연산
시계방향 달팽이 그리기
정수값의 짝수,홀수 갯수 구하기
java, Scanner 정리
draw dog
subscribe via RSS