ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TensorFlow 기초 2 - 변수, 값 치환, 누적(+=)
    TensorFlow 2022. 11. 28. 13:14

     

     

    # 변수 : 모델 학습 시, 매개변수 갱신 등을 위해 사용
    
    import tensorflow as tf
    
    f = tf.Variable(1.0)
    v = tf.Variable(tf.ones((2,)))
    m = tf.Variable(tf.ones((2, 1)))
    print(f)
    print(v)
    print(m)
    print(m.numpy())
    
    print()
    v1 = tf.Variable(1)
    print(v1)
    v1.assign(10) # 값 치환
    print(v1, v1.numpy(), type(v1))
    
    v2 = tf.Variable(tf.ones(shape=(1))) # 1-d tensor
    v2.assign([20])
    print(v2, v2.numpy(), type(v2))
    
    v3 = tf.Variable(tf.ones(shape=(1, 2))) # 2-d tensor
    v3.assign([[20, 30]])
    print(v3, v3.numpy(), type(v3))
    
    print()
    v1 = tf.Variable([3])
    v2 = tf.Variable([5])
    v3 = v1 * v2 + 10
    print(v3)
    
    print()
    var = tf.Variable([1,2,3,4,5], dtype = tf.float32)
    result1 = var + 10
    print(result1)
    
    print()
    w = tf.Variable(tf.ones(shape=(1,)))
    b = tf.Variable(tf.ones(shape=(1,)))
    w.assign([2])
    b.assign([3])
    
    def func1(x):
        return w * x + b
    
    out_a1 = func1([[3]])  # x값에 의해서 리턴값의 차원이 달라질 수 있다.
    print('out_a1 :', out_a1)
    
    print()
    @tf.function # auto graph 기능이 적용된 함수 : tf.Graph + tf.Session이 적용
    def func2(x):
        return w * x + b
    
    print(type(func2))
    out_a2 = func2([1, 2])
    print('out_a1 :', out_a2)
    
    print()
    rand = tf.random.uniform([1], 0, 1) # 균등분포
    print(rand.numpy())
    rand2 = tf.random.normal([5], mean=0, stddev=1) # 정규분포
    print(rand2.numpy())
    
    print()
    aa = tf.ones((2, 1))
    print(aa.numpy())
    
    m = tf.Variable(tf.zeros((2, 1)))
    print(m.numpy())
    m.assign(aa)
    print(m.numpy())
    
    m.assign_add(aa)  # m += aa의 개념
    print(m.numpy())
    
    m.assign_sub(aa)  # m -= aa의 개념
    print(m.numpy())
    
    
    
    <console>
    2022-11-28 14:41:27.387413: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
    To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
    <tf.Variable 'Variable:0' shape=() dtype=float32, numpy=1.0>
    <tf.Variable 'Variable:0' shape=(2,) dtype=float32, numpy=array([1., 1.], dtype=float32)>
    <tf.Variable 'Variable:0' shape=(2, 1) dtype=float32, numpy=
    array([[1.],
           [1.]], dtype=float32)>
    [[1.]
     [1.]]
    
    <tf.Variable 'Variable:0' shape=() dtype=int32, numpy=1>
    <tf.Variable 'Variable:0' shape=() dtype=int32, numpy=10> 10 <class 'tensorflow.python.ops.resource_variable_ops.ResourceVariable'>
    <tf.Variable 'Variable:0' shape=(1,) dtype=float32, numpy=array([20.], dtype=float32)> [20.] <class 'tensorflow.python.ops.resource_variable_ops.ResourceVariable'>
    <tf.Variable 'Variable:0' shape=(1, 2) dtype=float32, numpy=array([[20., 30.]], dtype=float32)> [[20. 30.]] <class 'tensorflow.python.ops.resource_variable_ops.ResourceVariable'>
    
    tf.Tensor([25], shape=(1,), dtype=int32)
    
    tf.Tensor([11. 12. 13. 14. 15.], shape=(5,), dtype=float32)
    
    out_a1 : tf.Tensor([[9.]], shape=(1, 1), dtype=float32)
    
    <class 'tensorflow.python.eager.polymorphic_function.polymorphic_function.Function'>
    out_a1 : tf.Tensor([5. 7.], shape=(2,), dtype=float32)
    
    [0.35073256]
    [-2.0095115 -0.3110462 -1.9975616  0.3110392  0.5237793]
    
    [[1.]
     [1.]]
    [[0.]
     [0.]]
    [[1.]
     [1.]]
    [[2.]
     [2.]]
    [[1.]
     [1.]]

     

    Variable() 함수는 값을 치환할 경우 assign() 함수를 사용하여 친환하여야 된다. 평범하게 변수를 치환하면 에러를 발생시킨다.

     

    tensor는 tensor끼리 연산해야 더 빠르게 연산된다.

     

    댓글

Designed by Tistory.