TensorFlow 시작하기(설치 이후 첫 튜토리얼)


이 블로그는 첫 번째 튜토리얼을 번역 후 필요에 따라 중간중간 설명을 첨가하였습니다.

원본 글은 https://www.tensorflow.org/ 에 포함되어 있습니다.


이 튜토리얼은 TensorFlow에서 프로그래밍을 시작하도록 안내합니다.

이 게시글을 읽기 전에 TensorFlow를 설치하십시오. 설치 방법은 이전 글에 있습니다.


이 가이드를 최대한 활용하려면 다음 사항을 알아야합니다.

파이썬으로 프로그래밍하는 법. (C#, Java는 해봤었습니다. 뭔가 유저 친화적이지만, 배우지 않았었기 때문에, 미흡한 점은 많습니다만, 구글링 및 튜토리얼 따라하면서 많이 배워가고 있습니다.

처음 하시는 분들도 두려워말고 도전하실 수 있습니다.)

최소한 배열에 대해서는.

이상적으로는 기계 학습에 관한 것입니다. 그러나 기계 학습에 대해 거의 또는 전혀 알지 못하는 경우에도 여전히 읽어야 할 첫 번째 가이드입니다.


TensorFlow는 여러 API를 제공합니다. 최저 수준의 API 인 TensorFlow Core는 완벽한 프로그래밍 제어 기능을 제공합니다. TensorFlow Core는 기계 학습 연구자 및 모델을 미세하게 제어해야하는 사람들에게 권장됩니다. 높은 수준의 API는 TensorFlow Core 위에 구축됩니다. 이러한 상위 수준의 API는 일반적으로 TensorFlow Core보다 배우고 사용하기가 쉽습니다. 또한 상위 수준의 API는 반복적 인 작업을 여러 사용자간에보다 쉽고 일관되게 만듭니다. tf.contrib.learn과 같은 고급 API를 사용하면 데이터 세트, 견적 도구, 교육 및 추론을 관리 할 수 ​​있습니다. 메소드 이름에 contrib가 포함 된 상위 수준의 TensorFlow API 중 일부는 아직 개발 중입니다. 이후의 TensorFlow 릴리스에서 일부 contrib 메소드가 변경되거나 더 이상 사용되지 않을 수도 있습니다. 이 가이드는 TensorFlow Core에 대한 자습서로 시작됩니다. 나중에 tf.contrib.learn에서 동일한 모델을 구현하는 방법을 보여줍니다. TensorFlow를 아는 것보다 핵심적인 API를 사용할 때 핵심 원칙을 통해 내부적으로 일하는 방식에 대한 훌륭한 정신적 모델을 얻을 수 있습니다.


Tensor

TensorFlow에서 데이터의 중심 단위는 텐서입니다. 텐서는 임의의 수의 차원으로 배열 된 프리미티브 값 집합으로 구성됩니다. 텐서의 랭크는 차원 수입니다. 다음은 텐서 (tensors)의 몇 가지 예입니다.

3 # a rank 0 tensor; this is a scalar with shape []
[1. ,2., 3.] # a rank 1 tensor; this is a vector with shape [3]
[[1., 2., 3.], [4., 5., 6.]] # a rank 2 tensor; a matrix with shape [2, 3]
[[[1., 2., 3.]], [[7., 8., 9.]]] # a rank 3 tensor with shape [2, 1, 3]

+ 기존의 알고 있던 데이터 배열과는 살짝 다른 느낌입니다. 즉 집합의 개념으로 사용됩니다.

+ 텐서의 랭크는 차원의 수 라고 되어있는 것 처럼, 각 [ ] 괄호를 주의 깊게 보시면 대략적인 이해에 도움이 될 것입니다.


TensorFlow 핵심 자습서

TensorFlow 가져 오기


TensorFlow 프로그램에 대한 표준 import 문은 다음과 같습니다.


python

>>>  import tensorflow as tf

+ 입력 후 ">>>"가 안보인다면, tensorflow 설치를 완료 안했을 경우가 많습니다. 



이렇게하면 파이썬에서 TensorFlow의 모든 클래스, 메소드 및 심볼에 액세스 할 수 있습니다. 대부분의 문서에서는 이미이 작업을 수행했다고 가정합니다.



The Computational Graph


TensorFlow Core 프로그램은 두 개의 개별 섹션으로 구성되어 있다고 생각할 수 있습니다.


1.계산 그래프 작성. (Building the computational graph.)

2.전산 그래프를 실행합니다. (Running the computational graph.)

계산 그래프는 일련의 TensorFlow 작업을 노드 그래프로 배열 한 것입니다. 간단한 전산 그래프를 작성해 봅시다. 각 노드는 0 이상의 텐서를 입력으로 사용하고 텐서를 출력으로 생성합니다. 노드의 한 유형은 상수입니다. 모든 TensorFlow 상수와 마찬가지로 입력을받지 않으며 내부적으로 저장하는 값을 출력합니다. 다음과 같이 두 개의 부동 소수점 Tensors node1과 node2를 만들 수 있습니다.


node1 = tf.constant(3.0, tf.float32)
node2
= tf.constant(4.0) # also tf.float32 implicitly
print(node1, node2)


마지막 print 서술문은


Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)


Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)
Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)

예상대로 노드 인쇄는 3.0과 4.0 값을 출력하지 않습니다. 대신 평가할 때 각각 3.0과 4.0을 생성하는 노드입니다. 노드를 실제로 평가하려면 세션 내에서 계산 그래프를 실행해야합니다. 세션은 TensorFlow 런타임의 컨트롤과 상태를 캡슐화합니다.


다음 코드는 Session 객체를 만든 다음 run 메소드를 호출하여 node1과 node2를 계산할 수있는 계산 그래프를 실행합니다. 다음과 같이 세션에서 전산 그래프를 실행합니다.

sess = tf.Session()
print(sess.run([node1, node2]))

3.0과 4.0의 예상 값을 봅니다.


Tensor 노드를 연산과 결합하여 더 복잡한 계산을 할 수 있습니다 (연산도 노드입니다). 예를 들어 두 개의 상수 노드를 추가하고 다음과 같이 새 그래프를 생성 할 수 있습니다.

node3 = tf.add(node1, node2)
print("node3: ", node3)
print("sess.run(node3): ",sess.run(node3))

+ 위의 결과되로 표시 되었다면 노드의 값을 tf.add를 통해 합쳐진 것을 볼 수 있습니다.

TensorFlow는 전산 그래프의 그림을 표시 할 수있는 TensorBoard라는 유틸리티를 제공합니다. 다음은 TensorBoard가 그래프를 시각화하는 방법을 보여주는 스크린 샷입니다.

TensorBoard screenshot

+텐서보드의 설치 및 활용 법은 추후 게시글에 올리도록 하겠습니다. 데이터의 흐름도의 이해를 위해 스크린샷 처럼 표시되는구나 정도로 일단 이해하시고 넘어가시면 됩니다.


이 도표는 항상 일정한 결과를 산출하기 때문에 특히 흥미 롭지 않습니다. 자리 표시 자라고하는 외부 입력을 허용하도록 그래프를 매개 변수화 할 수 있습니다. 자리 표시자는 나중에 값을 제공하겠다는 약속입니다.

a = tf.placeholder(tf.float32)
b
= tf.placeholder(tf.float32)
adder_node
= a + b  # + provides a shortcut for tf.add(a, b)

앞의 세 줄은 함수 또는 람다와 비슷하지만 두 개의 입력 매개 변수 (a 및 b)를 정의한 다음 해당 매개 변수에 대한 연산을 정의합니다. feed_dict 매개 변수를 사용하여 이러한 입력란에 구체적인 값을 제공하는 Tensors를 지정하여이 그래프를 여러 입력으로 평가할 수 있습니다.

print(sess.run(adder_node, {a: 3, b:4.5}))
print(sess.run(adder_node, {a: [1,3], b: [2, 4]}))


+ 출력 결과 물은 봣을 때 첫 번쨰 명령 문의 계산식은

3+ 4.5 이고

두번째 계산은

a: 1 + b: 2  = 3

a: 3 + b: 4 = 7

의 결과값을 표현하는 것입니다.


In TensorBoard, the graph looks like this:

TensorBoard screenshot


다른 연산을 추가하여 계산 그래프를 더 복잡하게 만들 수 있습니다. 예를 들어,

add_and_triple = adder_node * 3.
print(sess.run(add_and_triple, {a: 3, b:4.5}))
add_and_triple = adder_node * 3.
print(sess.run(add_and_triple, {a: 3, b:4.5}))
add_and_triple = adder_node * 3.
print(sess.run(add_and_triple, {a: 3, b:4.5}))

+ 연산 : (3+4.5)*3


The preceding computational graph would look as follows in TensorBoard:

TensorBoard screenshot

기계 학습에서 우리는 전형적으로 위와 같은 임의의 입력을 취할 수있는 모델을 원할 것입니다. 모델을 학습 가능하게 만들려면 동일한 입력으로 새로운 출력을 얻기 위해 그래프를 수정할 수 있어야합니다. 변수를 사용하면 그래프에 학습 가능한 매개 변수를 추가 할 수 있습니다. 그것들은 타입과 초기 값으로 구성됩니다 :

W = tf.Variable([.3], tf.float32)
b
= tf.Variable([-.3], tf.float32)
x
= tf.placeholder(tf.float32)
linear_model
= W * x + b

상원 의원은 제소자를 호출 할 때 값이 변하지 않을 것입니다. 반대로 할 수 없습니다. TensorFlow 프로그램의 모든 변수를 다음과 같이 사용하십시오.

init = tf.global_variables_initializer()
sess
.run(init)

init이 모든 전역 변수를 초기화하는 TensorFlow 하위 그래프의 핸들임을 인식하는 것이 중요합니다. sess.run을 호출 할 때까지 변수는 초기화되지 않습니다.


x는 자리 표시 자이므로 다음과 같이 x의 여러 값에 대해 linear_model을 동시에 평가할 수 있습니다.


print(sess.run(linear_model, {x:[1,2,3,4]}))


+ x를 순차적으로 대입하면서 출력하는 것을 볼 수 있습니다.


우리는 모델을 만들었지 만 아직 얼마나 좋은지 모릅니다. 훈련 데이터에 대한 모델을 평가하려면 원하는 값을 제공하기 위해 y 자리 표시자가 필요하며 손실 함수를 작성해야합니다.



손실 함수는 제공된 모델로부터 현재 모델이 얼마나 떨어져 있는지를 측정합니다. 현재 모델과 제공된 데이터 사이의 델타의 제곱을 합한 선형 회귀에 표준 손실 모델을 사용합니다. linear_model - y는 각 요소가 해당 예제의 오류 델타 인 벡터를 만듭니다. tf.square를 호출하여 오류를 제곱합니다. 그런 다음 모든 제곱 된 오류를 합하여 tf.reduce_sum을 사용하여 모든 예제의 오류를 추상화하는 단일 스칼라를 만듭니다.


y = tf.placeholder(tf.float32)
squared_deltas
= tf.square(linear_model - y)
loss
= tf.reduce_sum(squared_deltas)
print(sess.run(loss, {x:[1,2,3,4], y:[0,-1,-2,-3]}))




W와 b의 값을 -1과 1의 완벽한 값으로 재 할당하여 수동으로 향상시킬 수 있습니다. 변수는 tf.Variable에 제공된 값으로 초기화되지만 tf.assign과 같은 연산을 사용하여 변경할 수 있습니다. 예를 들어, W = -1 및 b = 1은 우리 모델에 대한 최적의 매개 변수입니다. 그에 따라 W와 B를 변경할 수 있습니다.


fixW = tf.assign(W, [-1.])
fixb
= tf.assign(b, [1.])
sess
.run([fixW, fixb])
print(sess.run(loss, {x:[1,2,3,4], y:[0,-1,-2,-3]}))

마지막 인쇄는 손실이 0임을 보여줍니다.


우리는 W와 B의 "완벽한"값을 추측했지만 기계 학습의 요점은 올바른 모델 매개 변수를 자동으로 찾는 것입니다. 다음 섹션에서이를 수행하는 방법을 보여줄 것입니다.




+ 지금은 손실이 0 인 것인 것처럼 간단한 계산식으로 했지만, 나중에 갈 수록 소수도 나오고 손실율도 커서 더 정확한 모듈을 만들기 위한 작업을 하겠습니다.


+ 일단 이번 글에서는 간단한 이해 및 원리만 이해하시면 되겠습니다.



우커머스를 활용하시면서 영어로 되어 있으면 사용자들이 많은 불편함을 가질 수도 있습니다.

상품에 add to cart 로 표시되는 것을 한국인 언어인 한글로 표시 하도록 하겠습니다.

장바구니 아래의 결과물부터 확인하시죠.








워드프레스, 그누보드5 등 다양한 것을 사용하였습니다. 이번기회에 워드프레스를 적극적으로 활용하기 위해 글을 남깁니다.

처음 사용하다 보니깐 미숙한점이 많습니다. 

이제 영어 좀 그만보고 싶어서. 한글로 변환하는 법을 소개드리고자합니다.


우커머스 플러그인은 쇼핑몰 구성도 잘 되어있고, 결제 연동이 원활한 것으로 알려져 있습니다. 또한, 많은 테마와 플러그인의 호환성을 봣을 땐, 간편히 구축할 수 있습니다.


우커머스를 플러그인을 통해 처음 설치하였으면, 기본언어가 영문으로 제공되어 있습니다. 

윗 화면이 아닌 Add To Cart로 보여지게 됩니다. 아무래도 한글에 비해서 고객들에게 불편함?까지는 아니지만, 친숙하지는 않을 것같아 UI측면에서 한글화를 시키도록 하겠습니다.



오늘 현재 최신버전에서 우커머스 번역은 53% 완료 되었습니다. 홈페이지를 참조하시면 얼만큼 번역이 완료되었고, 언제 업데이트 됬는지를 알 수 있습니다.


우커머스 파일은 계속 버전이 업그레이드 되어 번역의 수정 또는 추가작업이 지속적으로 필요하다.

번역은 우커머스 개발팀이 주도하지 않고 각 커뮤니티에서 자발적으로 번역작업을 수행한다.


위와 같은 환경과 맞물려 한글화가 모두 지원되지 않을수 있습니다. 하지만 개인의 노력을 더 하여 추가적으로 번역파일을 자신이 번역할 수 있습니다. 올려주시면 저도 감사히 사용하겠습니다...ㅎㅎ


그러면 이제 진행 법을 소개 시켜 드리겠습니다.


1. 번역 파일 준비하기


우커머스는 번역파일을 워드프레스 translate 사이트 에서 운용합니다.

https://translate.wordpress.org/projects/wp-plugins/woocommerce 

를 복사하셔서 이동하시면 각 언어들의 번역 완료 퍼센테이지가 나옵니다.


Ctril + F 를 활용하여 Korean을 검색하셔서 손 쉽게 이동하도록 합니다.


Korean 을 클릭 합니다. 


클릭 후 이동한 페이지에서 2번쨰 란에 보이는 Stable을 다운받을 것입니다.


여기서 Stable(Latest Release)를 클릭하여 이동합니다.



위 화면처럼 하단의 “Export” 를 클릭하여 파일로 다운로드 받아야 하며 Portable ~(.po) 파일과 (.mo) 파일을 각각 다운로드 받습니다. 


총 2개의 파일을 다운 받습니다. 


이후 파일명을 수정하셔야합니다.

복사 붙여넣기를 추천드립니다. 파일명이 다르면 적용이 안됩니다...


wp-plugins-woocommerce-stable-ko.mo  => woocommerce-ko_KR.mo


wp-plugins-woocommerce-stable-ko.po    => woocommerce-ko_KR.po


(대소문자와 “-“등의 입력과 확장자등을 주의해서 꼭 위와같은 이름으로 업로드하여야 정상적으로 적용됩니다!)


이제 파일 위치를 워드프레스 설치 디렉토리 /wp-content/languages/plugins/폴더 안에 업로드해야 합니다. woocommerce-ko_KR.mo, woocommerce-ko_KR.po 파일 모두 위 디렉토리에 업로드합니다.


이제 확인 해 보시면 위에 제 홈페이지처럼 한글로 바뀐것을 확인 하실 수 있습니다.


PowerPoint에서 이 Embed 코드로 이루어진 비디오를 삽입할 수 없다는 오류 발생시!!


파워포인트 메뉴의


[삽입] - 동영상 버튼을 눌러 추가 할 경우 아래의 오류 버튼이 뜰 수 있습니다.


제가 현재 사용하고있는 PowerPoint 정보를 알려드리겠습니다.


PowerPoint 2013 (15.0.4420.1017)  32비트 를 활용하고 있습니다.





이런 경고창을 보실 수 있습니다.


먼저 급한대로 해결 방법부터 나열하도록 하곘습니다.


Youtube 사이트에서 해당 동영상의  공유하기 버튼을 클릭합니다.


주소 말고 IFRAME의 코드를 복사를 합니다.


Iframe의 코드를 Embed 코드로 바꿔주는 작업이 필요합니다. 따라서 저는 구글에 


iframe to embed 로 검색을 했더니 여러 변환 사이트들이 나왔습니다.


개인적으로 활용한 사이트는 가장 처음에 나온 ㅎㅎ

https://nuridol.net/ut_convert.html

주소입니다.


아까 복사한 iframe코드를 복사하고 

Convert를 클릭하면 embed코드로 변환됩니다.


embed코드를 복사해서


동영상 삽입의 youtube가 아닌 3번째 란인 embed코드 부분에 입력하고 Enter를 클릭하시면
동영상이 들어가게 됩니다.


아 참! 복사할 때... 감사히 잘 사용은 했지만.. herf부분은 복사할 필요가없습니다~


예시로

<div><object width="560" height="315"><param name="movie" value="https://www.youtube.com/v/zlskcG6CLAY?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="https://www.youtube.com/v/zlskcG6CLAY?version=3" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>

이 부분 까지만 복사하셔도 충분합니다.


-------------------

최신 파워포인트 버전에서는 그냥 들어가집니다... 업데이트 자주 합시다! ㅎㅎ

추가 업데이트 경로는


클릭



추가 하였습니다. 


+ Recent posts