본문 바로가기
Tensorflow

Tensorflow vs Pytorch 명령어 비교

by 블쭌 2021. 5. 14.
728x90
  • tf.argsort(values, axis=-1, direction='ASCENDING')
arr = [1, 2, 3, 10, 5, 6]
arr_ascending = tf.argsort(arr, axis=-1, direction='ASCENDING')
arr_descending = tf.argsort(arr, axis=-1, direction='DESCENDING')

with tf.Session() as sess:
    print(sess.run(arr_ascending))
    print(sess.run(arr_descending))

# -----------------------------------
arr2 = [[1, 2], 
        [4, 8],
        [5, 3],
        [2, 7]]

print(np.array(arr2).shape)
arr2_ascending_col = tf.argsort(arr2, axis=0, direction='ASCENDING')
arr2_ascengind_row = tf.argsort(arr2, axis=-1, direction='ASCENDING')

with tf.Session() as sess:
    print(sess.run(arr2_ascending_row))
    print(sess.run(arr2_ascengind_col))
  • torch.argsort(input, dim=-1, descending=False) 
arr = [1, 2, 3, 10, 5, 6]
    
print(torch.argsort(torch.tensor(arr), dim=-1, descending=False))
print(torch.argsort(torch.tensor(arr), dim=-1, descending=True))

# -----------------------------------
arr2 = [[1, 2], 
        [4, 8],
        [5, 3],
        [2, 7]]

print(torch.argsort(torch.tensor(arr2), dim=0, descending=False))
print(torch.argsort(torch.tensor(arr2), dim=-1, descending=False))

축을 기준으로 정렬된 값을 반환하는것이 아니라 index를 반환한다.

해당 위치의 index를 반환 예를들어서 [1, 3, 2, 4]면 [0, 2, 1, 3]이다.

즉, 첫번째 -> index 0번째 값(1) / 두번째 -> index 2번째 값(2) / 세번째 -> index 1번째 값(3) / 네번째 -> index 3번째 값(4)를 의미하게된다.


  • tf.arg_max(input, dimension, output_type=tf.dtypes.int64, name=None)

dimension=1이면 행에서 가장 큰 값을 찾아서 index를 return

dimension=0이면 열에서 가장 큰 값을 찾아서 index를 return

data = tf.constant([[0.421],
                    [0.234],
                    [0.421],
                    [0.123],
                    [0.885]])

max_value = tf.argmax(input=data, axis=0)
min_value = tf.argmin(input=data, axis=0)

with tf.Session() as sess:
    print(sess.run(max_value))
    print(sess.run(min_value))
    
    
[4]
[3]
  • torch.argmax(input)
data = torch.normal(0.0, 1.0, size=[5, 1])
max_value = torch.argmax(input=data)
min_value = torch.argmin(input=data)
print(data)
print(max_value)
print(min_value)


tensor([[-2.1037],
        [-1.0173],
        [ 0.7168],
        [-1.0889],
        [-0.8065]])
tensor(2)
tensor(0)
  • tf.assign(ref, value, validate_shape=None, use_locking=None, name=None)

ref참고하고 있는 tensor에 value를 부여하는것이다. assign_add 등 사칙연산도 다양하게 적용이 가능하다.

a = tf.Variable(1)
a = tf.assign(a, 2)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(a))

변수를 할당했으므로 tf에서 변수를 반드시 초기화 해주어야한다.

 

728x90

댓글