소스 코드는 https://github.com/melonicedlatte/tensorflow_basic/tree/master 에 모두 올라와 있습니다.
tensorflow 자료형
핵심 : 그래프를 생성하고, 그래프를 세션에 넣어 그래프를 수행한다
기본 개념 익히기
일단 기본 용어부터 살펴보겠습니다.
일단 기본 용어부터 살펴보겠습니다.
용어
오퍼레이션(Operation)
- 그래프 상의 노드는 오퍼레이션(줄임말 op)으로 불립니다. 오퍼레이션은 하나 이상의 텐서를 받을 수 있습니다. 오퍼레이션은 계산을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있습니다.
텐서(Tensor)
- 내부적으로 모든 데이터는 텐서를 통해 표현됩니다. 텐서는 일종의 다차원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달됩니다. (Caffe의 Blob과 유사합니다.)
세션(Session)
- 그래프를 실행하기 위해서는 세션 객체가 필요합니다. 세션은 오퍼레이션의 실행 환경을 캡슐화한 것입니다.
변수(Variables)
- 변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용됩니다. 메모리 상에서 텐서를 저장하는 버퍼 역할을 합니다.
오퍼레이션(Operation)
- 그래프 상의 노드는 오퍼레이션(줄임말 op)으로 불립니다. 오퍼레이션은 하나 이상의 텐서를 받을 수 있습니다. 오퍼레이션은 계산을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있습니다.
텐서(Tensor)
- 내부적으로 모든 데이터는 텐서를 통해 표현됩니다. 텐서는 일종의 다차원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달됩니다. (Caffe의 Blob과 유사합니다.)
세션(Session)
- 그래프를 실행하기 위해서는 세션 객체가 필요합니다. 세션은 오퍼레이션의 실행 환경을 캡슐화한 것입니다.
변수(Variables)
- 변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용됩니다. 메모리 상에서 텐서를 저장하는 버퍼 역할을 합니다.
Hello, TensorFlow! 출력해보기
In [3]:import tensorflow as tf
In [7]:tf.Session()
Out[7]:<tensorflow.python.client.session.Session at 0x7fe83c71a470>
In [9]:sess = tf.Session()
In [11]:tf.constant('Hello, TensorFlow!')
Out[11]:<tf.Tensor 'Const_2:0' shape=() dtype=string>
In [10]:hello = tf.constant('Hello, TensorFlow!')
In [13]:sess.run(hello)
Out[13]:b'Hello, TensorFlow!'
In [3]:
import tensorflow as tf
In [7]:
tf.Session()
Out[7]:
<tensorflow.python.client.session.Session at 0x7fe83c71a470>
In [9]:
sess = tf.Session()
In [11]:
tf.constant('Hello, TensorFlow!')
Out[11]:
<tf.Tensor 'Const_2:0' shape=() dtype=string>
In [10]:
hello = tf.constant('Hello, TensorFlow!')
In [13]:
sess.run(hello)
Out[13]:
b'Hello, TensorFlow!'
placeholder
- placeholder는 그래프를 만들지 않는다.
- input 데이터를 받아두는 공간 (텐서를 매핑시킬 때 사용)
- 메소드 같은 역할
- 학습용 데이타를 담는 그릇을 플레이스홀더(placeholder)라고 한다.
- 플레이스홀더에 대해서 알아보면, 플레이스 홀더의 위의 그래프에서 x 즉 입력값을 저장하는 일종의 통(버킷)이다.
tf.placeholder(dtype,shape,name)
- dtype : 플레이스홀더에 저장되는 데이타형이다. tf.float32와 같이 실수,정수등의 데이타 타입을 정의한다.
- shape : 행렬의 차원을 정의한다. shapre=[3,3]으로 정의해주면, 이 플레이스홀더는 3x3 행렬을 저장하게 된다.
- name : name은 이 플레이스 홀더의 이름을 정의한다.
- placeholder는 그래프를 만들지 않는다.
- input 데이터를 받아두는 공간 (텐서를 매핑시킬 때 사용)
- 메소드 같은 역할
- 학습용 데이타를 담는 그릇을 플레이스홀더(placeholder)라고 한다.
- 플레이스홀더에 대해서 알아보면, 플레이스 홀더의 위의 그래프에서 x 즉 입력값을 저장하는 일종의 통(버킷)이다.
tf.placeholder(dtype,shape,name)
- dtype : 플레이스홀더에 저장되는 데이타형이다. tf.float32와 같이 실수,정수등의 데이타 타입을 정의한다.
- shape : 행렬의 차원을 정의한다. shapre=[3,3]으로 정의해주면, 이 플레이스홀더는 3x3 행렬을 저장하게 된다.
- name : name은 이 플레이스 홀더의 이름을 정의한다.
Variable
- 하나의 객체
- weight 를 정의할 때 사용한다.
- 타입을 정의 해주는 것이 좋다. (타입을 맞춰야 연산 시에 type 에러가 발생할 확률이 적어진다.)
- y=W*x+b 라는 학습용 가설이 있을때, x가 입력데이타 였다면, W와 b는 학습을 통해서 구해야 하는 값이 된다. 이를 변수(Variable)이라고 하는데, 변수형은 Variable 형의 객체로 생성이 된다.
tf.Variable.init(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None)
- 하나의 객체
- weight 를 정의할 때 사용한다.
- 타입을 정의 해주는 것이 좋다. (타입을 맞춰야 연산 시에 type 에러가 발생할 확률이 적어진다.)
- y=W*x+b 라는 학습용 가설이 있을때, x가 입력데이타 였다면, W와 b는 학습을 통해서 구해야 하는 값이 된다. 이를 변수(Variable)이라고 하는데, 변수형은 Variable 형의 객체로 생성이 된다.
tf.Variable.init(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None)
Constant
- 상수를 정의
- 메소드
- 상수형은 말 그대로 상수를 저장하는 데이타 형이다.
tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False)
- value : 상수의 값이다.
- dtype : 상수의 데이타형이다. tf.float32와 같이 실수,정수등의 데이타 타입을 정의한다.
- shape : 행렬의 차원을 정의한다. shape=[3,3]으로 정의해주면, 이 상수는 3x3 행렬을 저장하게 된다.
- name : name은 이 상수의 이름을 정의한다.
In [18]:placeholder = tf.placeholder(tf.float32, shape=(3,3))
Variables = tf.Variable([1,2,3,4,5], dtype = tf.float32 )
constant = tf.constant([10,20,30,40,50], dtype = tf.float32)
- 상수를 정의
- 메소드
- 상수형은 말 그대로 상수를 저장하는 데이타 형이다.
tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False)
- value : 상수의 값이다.
- dtype : 상수의 데이타형이다. tf.float32와 같이 실수,정수등의 데이타 타입을 정의한다.
- shape : 행렬의 차원을 정의한다. shape=[3,3]으로 정의해주면, 이 상수는 3x3 행렬을 저장하게 된다.
- name : name은 이 상수의 이름을 정의한다.
In [18]:
placeholder = tf.placeholder(tf.float32, shape=(3,3))
Variables = tf.Variable([1,2,3,4,5], dtype = tf.float32 )
constant = tf.constant([10,20,30,40,50], dtype = tf.float32)
아래와 같은 연산을 허용하지 않는다.
In [19]:a = 5 * 4
print (a)
20
In [19]:
a = 5 * 4
print (a)
20
아래와 같이 텐서가 이렇게 생겼다라는 모양만 준다.
In [21]:print(placeholder)
Tensor("Placeholder_3:0", shape=(3, 3), dtype=float32)
In [22]:print(Variables)
Tensor("Variable_1/read:0", shape=(5,), dtype=float32)
In [21]:
print(placeholder)
Tensor("Placeholder_3:0", shape=(3, 3), dtype=float32)
In [22]:
print(Variables)
Tensor("Variable_1/read:0", shape=(5,), dtype=float32)
그렇다면 연산을 어떻게 해야 할까요???
- 텐서플로우의 핵심 == 그래프를 생성한다
- 세션 안에 그래프를 넣고, 세션 run() 함수를 통해 그래프의 최종 값을 얻는다.
- 세션은 일종의 파일이라고 생각하자. (열고 닫는다)
- 세션의 run() 함수는 값을 리턴
In [24]:sess = tf.Session()
result = sess.run(constant)
result
Out[24]:array([ 10., 20., 30., 40., 50.], dtype=float32)
------session------
| a + ㅁ + ㅁ => d |
| | | |
| b c |
-------------------
ㅁ 를 placeholder 라고 생각하자
In [26]:a = tf.constant([5], dtype = tf.float32)
b = tf.constant([6], dtype = tf.float32)
c = tf.constant([7], dtype = tf.float32)
d = a + b + c
d
Out[26]:<tf.Tensor 'add_3:0' shape=(1,) dtype=float32>
In [27]:sess.run(d)
Out[27]:array([ 18.], dtype=float32)
- 텐서플로우의 핵심 == 그래프를 생성한다
- 세션 안에 그래프를 넣고, 세션 run() 함수를 통해 그래프의 최종 값을 얻는다.
- 세션은 일종의 파일이라고 생각하자. (열고 닫는다)
- 세션의 run() 함수는 값을 리턴
In [24]:
sess = tf.Session()
result = sess.run(constant)
result
Out[24]:
array([ 10., 20., 30., 40., 50.], dtype=float32)
------session------
| a + ㅁ + ㅁ => d |
| | | |
| b c |
-------------------
ㅁ 를 placeholder 라고 생각하자
In [26]:
a = tf.constant([5], dtype = tf.float32)
b = tf.constant([6], dtype = tf.float32)
c = tf.constant([7], dtype = tf.float32)
d = a + b + c
d
Out[26]:
<tf.Tensor 'add_3:0' shape=(1,) dtype=float32>
In [27]:
sess.run(d)
Out[27]:
array([ 18.], dtype=float32)
변수(Variable)을 동일하게 해보면??
- 에러 발생
- variable은 반드시 초기화가 필요한 텐서이다 (초기화 함수를 호출해야 한다.)
- 그래프는 variable 도 동일하게 만든다
In [29]:var1 = tf.Variable([1], dtype = tf.float32 )
var2 = tf.Variable([2], dtype = tf.float32 )
var3 = tf.Variable([3], dtype = tf.float32 )
var4 = var1 + var2 + var3
var4
Out[29]:<tf.Tensor 'add_7:0' shape=(1,) dtype=float32>
In [30]:sess.run(var4)
---------------------------------------------------------------------------
FailedPreconditionError Traceback (most recent call last)
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1020 try:
-> 1021 return fn(*args)
1022 except errors.OpError as e:
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
1002 feed_dict, fetch_list, target_list,
-> 1003 status, run_metadata)
1004
/usr/lib/python3.5/contextlib.py in __exit__(self, type, value, traceback)
65 try:
---> 66 next(self.gen)
67 except StopIteration:
/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py in raise_exception_on_not_ok_status()
468 compat.as_text(pywrap_tensorflow.TF_Message(status)),
--> 469 pywrap_tensorflow.TF_GetCode(status))
470 finally:
FailedPreconditionError: Attempting to use uninitialized value Variable_5
[[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
During handling of the above exception, another exception occurred:
FailedPreconditionError Traceback (most recent call last)
<ipython-input-30-f9e321651329> in <module>()
----> 1 sess.run(var4)
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
764 try:
765 result = self._run(None, fetches, feed_dict, options_ptr,
--> 766 run_metadata_ptr)
767 if run_metadata:
768 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
962 if final_fetches or final_targets:
963 results = self._do_run(handle, final_targets, final_fetches,
--> 964 feed_dict_string, options, run_metadata)
965 else:
966 results = []
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
1012 if handle is None:
1013 return self._do_call(_run_fn, self._session, feed_dict, fetch_list,
-> 1014 target_list, options, run_metadata)
1015 else:
1016 return self._do_call(_prun_fn, self._session, handle, feed_dict,
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1032 except KeyError:
1033 pass
-> 1034 raise type(e)(node_def, op, message)
1035
1036 def _extend_graph(self):
FailedPreconditionError: Attempting to use uninitialized value Variable_5
[[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
Caused by op 'Variable_5/read', defined at:
File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/__main__.py", line 3, in <module>
app.launch_new_instance()
File "/home/gohn/.local/lib/python3.5/site-packages/traitlets/config/application.py", line 658, in launch_instance
app.start()
File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelapp.py", line 474, in start
ioloop.IOLoop.instance().start()
File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/ioloop.py", line 177, in start
super(ZMQIOLoop, self).start()
File "/home/gohn/.local/lib/python3.5/site-packages/tornado/ioloop.py", line 887, in start
handler_func(fd_obj, events)
File "/home/gohn/.local/lib/python3.5/site-packages/tornado/stack_context.py", line 275, in null_wrapper
return fn(*args, **kwargs)
File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 440, in _handle_events
self._handle_recv()
File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 472, in _handle_recv
self._run_callback(callback, msg)
File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 414, in _run_callback
callback(*args, **kwargs)
File "/home/gohn/.local/lib/python3.5/site-packages/tornado/stack_context.py", line 275, in null_wrapper
return fn(*args, **kwargs)
File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 276, in dispatcher
return self.dispatch_shell(stream, msg)
File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 228, in dispatch_shell
handler(stream, idents, msg)
File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 390, in execute_request
user_expressions, allow_stdin)
File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/ipkernel.py", line 196, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/zmqshell.py", line 501, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/home/gohn/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2717, in run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/home/gohn/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2821, in run_ast_nodes
if self.run_code(code, result):
File "/home/gohn/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-29-58056d2b91ef>", line 1, in <module>
var1 = tf.Variable([1], dtype = tf.float32 )
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variables.py", line 224, in __init__
expected_shape=expected_shape)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variables.py", line 370, in _init_from_args
self._snapshot = array_ops.identity(self._variable, name="read")
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 1424, in identity
result = _op_def_lib.apply_op("Identity", input=input, name=name)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op
op_def=op_def)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2240, in create_op
original_op=self._default_original_op, op_def=op_def)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1128, in __init__
self._traceback = _extract_stack()
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable_5
[[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
In [31]:init = tf.initialize_all_variables()
sess.run(init)
sess.run(var4)
WARNING:tensorflow:From <ipython-input-31-1b4cfb75d81a>:1 in <module>.: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.global_variables_initializer` instead.
Out[31]:array([ 6.], dtype=float32)
- 에러 발생
- variable은 반드시 초기화가 필요한 텐서이다 (초기화 함수를 호출해야 한다.)
- 그래프는 variable 도 동일하게 만든다
In [29]:
var1 = tf.Variable([1], dtype = tf.float32 )
var2 = tf.Variable([2], dtype = tf.float32 )
var3 = tf.Variable([3], dtype = tf.float32 )
var4 = var1 + var2 + var3
var4
Out[29]:
<tf.Tensor 'add_7:0' shape=(1,) dtype=float32>
In [30]:
sess.run(var4)
--------------------------------------------------------------------------- FailedPreconditionError Traceback (most recent call last) /usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args) 1020 try: -> 1021 return fn(*args) 1022 except errors.OpError as e: /usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata) 1002 feed_dict, fetch_list, target_list, -> 1003 status, run_metadata) 1004 /usr/lib/python3.5/contextlib.py in __exit__(self, type, value, traceback) 65 try: ---> 66 next(self.gen) 67 except StopIteration: /usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py in raise_exception_on_not_ok_status() 468 compat.as_text(pywrap_tensorflow.TF_Message(status)), --> 469 pywrap_tensorflow.TF_GetCode(status)) 470 finally: FailedPreconditionError: Attempting to use uninitialized value Variable_5 [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]] During handling of the above exception, another exception occurred: FailedPreconditionError Traceback (most recent call last) <ipython-input-30-f9e321651329> in <module>() ----> 1 sess.run(var4) /usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata) 764 try: 765 result = self._run(None, fetches, feed_dict, options_ptr, --> 766 run_metadata_ptr) 767 if run_metadata: 768 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) /usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata) 962 if final_fetches or final_targets: 963 results = self._do_run(handle, final_targets, final_fetches, --> 964 feed_dict_string, options, run_metadata) 965 else: 966 results = [] /usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata) 1012 if handle is None: 1013 return self._do_call(_run_fn, self._session, feed_dict, fetch_list, -> 1014 target_list, options, run_metadata) 1015 else: 1016 return self._do_call(_prun_fn, self._session, handle, feed_dict, /usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args) 1032 except KeyError: 1033 pass -> 1034 raise type(e)(node_def, op, message) 1035 1036 def _extend_graph(self): FailedPreconditionError: Attempting to use uninitialized value Variable_5 [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]] Caused by op 'Variable_5/read', defined at: File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_main "__main__", mod_spec) File "/usr/lib/python3.5/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/__main__.py", line 3, in <module> app.launch_new_instance() File "/home/gohn/.local/lib/python3.5/site-packages/traitlets/config/application.py", line 658, in launch_instance app.start() File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelapp.py", line 474, in start ioloop.IOLoop.instance().start() File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/ioloop.py", line 177, in start super(ZMQIOLoop, self).start() File "/home/gohn/.local/lib/python3.5/site-packages/tornado/ioloop.py", line 887, in start handler_func(fd_obj, events) File "/home/gohn/.local/lib/python3.5/site-packages/tornado/stack_context.py", line 275, in null_wrapper return fn(*args, **kwargs) File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 440, in _handle_events self._handle_recv() File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 472, in _handle_recv self._run_callback(callback, msg) File "/home/gohn/.local/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 414, in _run_callback callback(*args, **kwargs) File "/home/gohn/.local/lib/python3.5/site-packages/tornado/stack_context.py", line 275, in null_wrapper return fn(*args, **kwargs) File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 276, in dispatcher return self.dispatch_shell(stream, msg) File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 228, in dispatch_shell handler(stream, idents, msg) File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 390, in execute_request user_expressions, allow_stdin) File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/ipkernel.py", line 196, in do_execute res = shell.run_cell(code, store_history=store_history, silent=silent) File "/home/gohn/.local/lib/python3.5/site-packages/ipykernel/zmqshell.py", line 501, in run_cell return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs) File "/home/gohn/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2717, in run_cell interactivity=interactivity, compiler=compiler, result=result) File "/home/gohn/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2821, in run_ast_nodes if self.run_code(code, result): File "/home/gohn/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-29-58056d2b91ef>", line 1, in <module> var1 = tf.Variable([1], dtype = tf.float32 ) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variables.py", line 224, in __init__ expected_shape=expected_shape) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variables.py", line 370, in _init_from_args self._snapshot = array_ops.identity(self._variable, name="read") File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 1424, in identity result = _op_def_lib.apply_op("Identity", input=input, name=name) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op op_def=op_def) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2240, in create_op original_op=self._default_original_op, op_def=op_def) File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1128, in __init__ self._traceback = _extract_stack() FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable_5 [[Node: Variable_5/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_5"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_5)]]
In [31]:
init = tf.initialize_all_variables()
sess.run(init)
sess.run(var4)
WARNING:tensorflow:From <ipython-input-31-1b4cfb75d81a>:1 in <module>.: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02. Instructions for updating: Use `tf.global_variables_initializer` instead.
Out[31]:
array([ 6.], dtype=float32)
위의 함수보단 아래의 함수를 추천한다고 하니 아래의 함수를 사용해보자
In [32]:init = tf.global_variables_initializer()
sess.run(init)
sess.run(var4)
Out[32]:array([ 6.], dtype=float32)
In [32]:
init = tf.global_variables_initializer()
sess.run(init)
sess.run(var4)
Out[32]:
array([ 6.], dtype=float32)
placeholder
- tensor와 데이터를 매핑 시키는 역할을 함
- 그래프를 만들지 않는다
- pandas , numpy, 파이선 기본 자료형을 텐서로 매핑
feeding
변수를 텐서로 인식한다!!
In [35]:value1 = 5
value2 = 3
value3 = 2
ph1 = tf.placeholder(dtype=tf.float32)
ph2 = tf.placeholder(dtype=tf.float32)
ph3 = tf.placeholder(dtype=tf.float32)
result_value = ph1 * ph2 * ph3
feed_dict = {ph1: value1, ph2: value2, ph3: value3 }
In [36]:sess.run(result_value, feed_dict = feed_dict)
Out[36]:30.0
In [40]:image = [1,2,3,4,5]
label = [10,20,30,40,50]
ph_image = tf.placeholder(dtype=tf.float32)
ph_label = tf.placeholder(dtype=tf.float32)
feed_dict = {ph_image: image, ph_label: label }
result_value = ph_image + ph_label
sess.run(result_value, feed_dict = feed_dict)
Out[40]:array([ 11., 22., 33., 44., 55.], dtype=float32)
In [41]:image = [1,2,3,4,5]
label = [10,20,30,40,50]
ph_image = tf.placeholder(dtype=tf.float32)
ph_label = tf.placeholder(dtype=tf.float32)
feed_dict = {ph_image: image, ph_label: label }
result_value = ph_image * ph_label
sess.run(result_value, feed_dict = feed_dict)
Out[41]:array([ 10., 40., 90., 160., 250.], dtype=float32)
- tensor와 데이터를 매핑 시키는 역할을 함
- 그래프를 만들지 않는다
- pandas , numpy, 파이선 기본 자료형을 텐서로 매핑
feeding
변수를 텐서로 인식한다!!
In [35]:
value1 = 5
value2 = 3
value3 = 2
ph1 = tf.placeholder(dtype=tf.float32)
ph2 = tf.placeholder(dtype=tf.float32)
ph3 = tf.placeholder(dtype=tf.float32)
result_value = ph1 * ph2 * ph3
feed_dict = {ph1: value1, ph2: value2, ph3: value3 }
In [36]:
sess.run(result_value, feed_dict = feed_dict)
Out[36]:
30.0
In [40]:
image = [1,2,3,4,5]
label = [10,20,30,40,50]
ph_image = tf.placeholder(dtype=tf.float32)
ph_label = tf.placeholder(dtype=tf.float32)
feed_dict = {ph_image: image, ph_label: label }
result_value = ph_image + ph_label
sess.run(result_value, feed_dict = feed_dict)
Out[40]:
array([ 11., 22., 33., 44., 55.], dtype=float32)
In [41]:
image = [1,2,3,4,5]
label = [10,20,30,40,50]
ph_image = tf.placeholder(dtype=tf.float32)
ph_label = tf.placeholder(dtype=tf.float32)
feed_dict = {ph_image: image, ph_label: label }
result_value = ph_image * ph_label
sess.run(result_value, feed_dict = feed_dict)
Out[41]:
array([ 10., 40., 90., 160., 250.], dtype=float32)