텐서플로우 변수 placd holder

2020. 8. 7. 09:52딥러닝

tf.variable()

var1 = tf.Variable([5])
var2 = tf.Variable([10])
var3 = tf.Variable([3])
 
var4 = var1 * var2 + var3
 
print(var4)

 이상한 값이 나온다. variable은 텐서가 아니라 인스턴스일뿐이다. 따라서 해당 인터스턴스를 그래프에 

추가 시켜줘야하 한다.

var1 = tf.Variable([5])
var2 = tf.Variable([10])
var3 = tf.Variable([3])
 
var4 = var1 * var2 + var3
 
init = tf.global_variables_initializer()
 
sess.run(init)
print(var4)
 
result = sess.run(var4) 
print(result)

위와 같이 수정시켜줘야 올바른 값이 나올수 있다.

global_variables_initializer() 를 사용하여야 한다. 이것을 하기 전에는 variable에 값이 아직 없는 것을

의미한다.

해당 함수를 사용해주어야 Variable 의 값이 할당 되는 것이고 텐서의 그래프로써의 효력이

발생하는 것이다

 

 

/////위와 다르게 변수를 만들지 않고바로 작동 시켜줄 수도 있다.

    sess.run(tf.global_variables_initializer()

 

 

 

 

 


place holder의 전달 파라미터 

텐서플로우는 그래프라는 것을 미리 말들어 놓고, 필요한 시점에 해당 그래프를 만들어 놓고, 필요한 시점에 해당 그래프를 실행하는 방식을 사용한다. 이의 내용에 걸맞게 플레이스폴더는 변수의 타입을 미리 설정해놓고 필요한 변수를 나중에 받아서 실행하는것을 의미 하기에 신견망을 구축하기에 가장 어울리는 변수 설정이다.

placeholder(
    dtype,
    shape=None,
    name=None
)

dtype : 데이터 타입을 의미하며 반드시 적어주어야 한다.

shape : 입력 데이터의 형태를 의미한다. 상수 값이 될 수도 있고 다차원 배열의 정보가 들어올 수도 있다. ( 디폴트 파라미터로 None 지정 )

name : 해당 placeholder의 이름을 부여하는 것으로 적지 않아도 된다.  ( 디폴트 파라미터로 None 지정 )