본문 바로가기
Tensorflow

Tensorflow vs Pytorch 명령어 비교 - (2)

by 블쭌 2021. 5. 15.
728x90
  • tf.boolean_mask(tensor, mask, name='boolean_mask', axis=No)
tensor = [0, 1, 2, 3]
mask = np.array([True, False, True, False])

tensor2 = [[1, 2], [3, 4], [5, 6]]
mask2 = np.array([True, False, True])

with tf.Session() as sess:
    print(sess.run(tf.boolean_mask(tensor, mask)))
    print(sess.run(tf.boolean_mask(tensor2, mask2)))
    
    
[0 2]
[[1 2]
 [5 6]]
  • torch.masked_select(input, mask, *, out=None)
tensor = torch.randn(3, 4)
# ge : input >= output 반환형은 boolean
mask = tensor.ge(0.5)

print(tensor)
print(mask)
print(torch.masked_select(tensor, mask))

tensor([[ 0.2379, -0.7851,  0.6054,  1.2086],
        [-1.4207,  0.4659, -0.6452, -1.4996],
        [-0.1239, -0.4539, -2.0769,  0.6514]])
tensor([[False, False,  True,  True],
        [False, False, False, False],
        [False, False, False,  True]])
tensor([0.6054, 1.2086, 0.6514])

True로된 값만 masking을 통해서 불러온다.


  • tf.cast(x, dtype, name=None)
x = tf.constant([1.8, 2.2], dtype=tf.float32)
with tf.Session() as sess:
    print(sess.run(x))
    
[1.8 2.2]    
    
x = tf.dtypes.cast(x, tf.int32)
with tf.Session() as sess:
    print(sess.run(x))
    
[1 2]
  • Tensor_name.type
x = torch.tensor([1.8, 2.2])
print(x.dtype) 
print(x)
x = x.type(torch.LongTensor)
print(x.dtype)
print(x)

torch.float32
tensor([1.8000, 2.2000])
torch.int64
tensor([1, 2])

torch.LongTensor-> int , torch.DoubleTensor-> float64, torch.FloatTensor-> float32

 

타입을 변경해주는 함수


  • tf.clip_by_value(t, clip_value_min, clip_value_max, name=None)
A = tf.constant([[1, 20, 13], [3, 21, 13]])
B = tf.clip_by_value(A, clip_value_min=3, clip_value_max=13)
with tf.Session() as sess:
    print(sess.run(A))
    print(sess.run(B))
    
[[ 1 20 13]
 [ 3 21 13]]
[[ 3 13 13]
 [ 3 13 13]]
  • torch.clamp(input, min, max)
A = torch.tensor([[1, 20, 13], [3, 21, 13]])
B = torch.clamp(A, 3, 13)
print(A)
print(B)

tensor([[ 1, 20, 13],
        [ 3, 21, 13]])
tensor([[ 3, 13, 13],
        [ 3, 13, 13]])

min보다 작을 경우는 min으로 값을 바꾸고 max보다 값이 클 경우에는 max로 값을 바꾸어준다.


  • tf.concat(values, axis)
t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
concat_0 = tf.concat([t1, t2], axis=0)  
concat_1 = tf.concat([t1, t2], axis=1)  

with tf.Session() as sess:
    print(sess.run(concat_0))
    print(sess.run(concat_1))

# concat_0
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

# concat_1
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
  • torch.cat
t1 = torch.tensor([[1, 2, 3], [4, 5, 6]])
t2 = torch.tensor([[7, 8, 9], [10, 11, 12]])
concat_0 = torch.cat([t1, t2], dim=0)  
concat_1 = torch.cat([t1, t2], dim=1)  

print(concat_0)
tensor([[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]])
        
        
print(concat_1)
tensor([[ 1,  2,  3,  7,  8,  9],
        [ 4,  5,  6, 10, 11, 12]])

concat 함수 많이 사용되는 함수

axis, dim = 0이면 행으로 이어붙이는 즉 위에서 아래로 붙인다.

axis, dim = 1이면 열로 이어붙이는 즉 왼쪽 오른쪽끼리 붙인다.


  • tf.fill(dims, value, name=None)
t1 = tf.fill([3, 3], 225)
with tf.Session() as sess:
    print(sess.run(t1))
    
[[225 225 225]
 [225 225 225]
 [225 225 225]]
  • torch.full(size, fill_value)
t1 = torch.full((3, 3), 225)
print(t1)

tensor([[225, 225, 225],
        [225, 225, 225],
        [225, 225, 225]])

하나의 값으로 원하는 shape만큼 tensor를 만들어준다.


 

728x90

댓글