텐서플로우(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