#피처들 목록
'Device_AddN', 'Device_AddV2', 'Device_ArgMax',
       'Device_AssignAddVariableOp', 'Device_BiasAdd', 'Device_BiasAddGrad',
       'Device_Cast', 'Device_Conv2D', 'Device_Conv2DBackpropFilter',
       'Device_Conv2DBackpropInput', 'Device_DivNoNan', 'Device_DynamicStitch',
       'Device_Equal', 'Device_FusedBatchNormGradV3',
       'Device_FusedBatchNormV3', 'Device_LogicalAnd', 'Device_MatMul',
       'Device_MaxPool', 'Device_MaxPoolGrad', 'Device_Mul', 'Device_RealDiv',
       'Device_Relu', 'Device_ReluGrad', 'Device_ResourceApplyGradientDescent',
       'Device_Softmax', 'Device_SoftmaxCrossEntropyWithLogits', 'Device_Sum',
       'Device_Tile', 'Device_Unknown', 'Device__FusedConv2D',
       'Device__HostRecv', 'Host_FlushSummaryWriter', 'Host_IteratorGetNext',
       'Host_LogicalAnd', 'Host_WriteSummary', 'Device_AvgPool',
       'Device_AvgPoolGrad', 'Device_Square', 'Device_Mean',
       'Device_BroadcastTo'

  • Device_AddN

모두 더해서 출력한다

x = [9, 7, 10]
tf.math.add_n(x) ==> 26
  • Device_AddV2

요소별로 x + y 출력

tf.raw_ops.AddV2(x, y, name=None)
  • Device_ArgMax

전체 행렬에 대해 계산되어 단일 숫자를 반환함 (=몇번째가 제일큰지)

tf.raw_ops.ArgMax(
    input, dimension, output_type=tf.dtypes.int64, name=None
)
from numpy import argmax
vector = [0.4, 0.5, 0.1]  # define vector
result = argmax(vector)  # get argmax
print('arg max of %s: %d' % (vector, result))
>>arg max of [0.4, 0.5, 0.1]: 1  #1[0th,1th,2th]중 두번째값(0.5)이 젤 크다는뜻
probs = asarray([[0.4, 0.5, 0.1], [0.0, 0.0, 1.0], [0.9, 0.0, 0.1], [0.3, 0.3, 0.4]])
print(probs.shape)
result = argmax(probs, axis=1)
print(result)
>>(4, 3)[1 2 0 2] 

참조 : https://deeplizard.com/learn/video/K3lX3Cltt4c

  • AssignAddVariableOp

변수에 현재값을 추가

tf.raw_ops.AssignAddVariableOp(resource, value, name=None)

  • Device_BiasAdd

bias 와 value 를 더해준다.

-scope: A Scope object

-value: Any number of dimensions.

-bias: 1-D with size the last dimension of value.

tf.raw_ops.BiasAdd(value, bias, data_format='NHWC', name=None)

  • BiasAddGrad

The backward operation for "BiasAdd" on the "bias" tensor.

tf.raw_ops.BiasAddGrad(out_backprop, data_format='NHWC', name=None)

  • Device_Cast

x.values를 dtype으로 변환

tf.cast(x, dtype, name=None)
x = tf.constant([1.8, 2.2], dtype=tf.float32)
tf.dtypes.cast(x, tf.int32)

# float32 -> int32로 변환해주었다.

  • Device_Conv2D
Conv2D(32, (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu')

순서대로, 필터수, (행,열) , padding:경계처리방법

'valid'는 유효한 영역만 출력 / 'same' 출력 이미지 사이즈가 입력 이미지 사이즈와 동일

input_shape : 샘플수를 제외한 입력형태를 정의, 첫 레이어일떄만 정의해주면됨 (행,열,채널수)

activation : 활성화 함수 설정

‘linear’ : 디폴트 값, 입력뉴런과 가중치로 계산된 결과값이 그대로 출력으로 나옴 / ‘relu’ : 은닉층에 주로 쓰임 / ‘sigmoid’ : 이진 분류 문제에서 출력층에 주로 쓰임 / ‘softmax’ : 다중 클래스 분류 문제에서 출력층에 주로 쓰임

  • Device_Conv2DBackpropFilter

필터 에 대한 컨볼루션의 gradients를 구함

tf.raw_ops.Conv2DBackpropFilter(
    input, filter_sizes, out_backprop, strides, padding, use_cudnn_on_gpu=True,
    explicit_paddings=[], data_format='NHWC', dilations=[1, 1, 1, 1],
    name=None
)

input : 텐서! [배치,인풋높이, 인풋너비, 인풋채널] 이런 모양이어야한다.

filter_sizes : int32모양의 정수벡터여야함, [높이,너비,인풋채널,출력채널]

out_backprop : 텐서 [배치.출력높이,출력너비,출력채널] 모양

strides : 필터가 이동할간격

padding : "SAME", "VALID", "EXPLICIT"

use_cudnn_on_gpu : optional. true가 디폴트

explicit_paddings : 앞에서 패딩이 EXPLICIT 일때, the list of explicit padding amounts

data_format : NHWC가 디폴트

# NHWC
output[b, i, j, k] = sum_{di, dj, q} input[b, strides[1] * i + di, strides[2] * j + dj, q] * filter[di, dj, q, k]
  • Device_Conv2DBackpropInput

input 에 대한 컨볼루션의 gradients를 구함

tf.raw_ops.Conv2DBackpropInput(
    input_sizes, filter, out_backprop, strides, padding, use_cudnn_on_gpu=True,
    explicit_paddings=[], data_format='NHWC', dilations=[1, 1, 1, 1],
    name=None)
  • Device_DivNoNan

리턴값 : The z tensor.

tf.raw_ops.DivNoNan(x, y, name=None)
  • Device_DynamicStitch

데이터로부터 텐서를 단일 텐서로 interleave해준다

**interleave : http://www.terms.co.kr/interleave.htmhttp://www.terms.co.kr/interleave.htm

성능을 높이기 위해서 데이터가 서로 인접하지 않도록 배열하는바업.

tf.raw_ops.DynamicStitch(indices, data, name=None)
  • Device_Equal

x,y 가 같은지 리턴해줌

tf.math.equal(x, y, name=None)
  • Device_FusedBatchNormGradV3

배치 정규화를 위한 기울기

4D Tensor의 크기는 "NHWC"또는 "NCHW"로 정의한다 (data_format)

tf.raw_ops.FusedBatchNormGradV3(
    y_backprop, x, scale, reserve_space_1, reserve_space_2, reserve_space_3,
    epsilon=0.0001, data_format='NHWC', is_training=True, name=None)
  • Device_FusedBatchNormV3

배치 정규화

tf.raw_ops.FusedBatchNormV3(x, scale, offset, mean, variance, epsilon=0.0001, exponential_avg_factor=1,data_format='NHWC', is_training=True, name=None)
  • Device_LogicalAnd

x and y 의 truth을 리턴함

  • Device_MatMul

dot이랑 비슷하다. 곱셈을 의미함


  • Device_MaxPool

  • Device_MaxPoolGrad

맥스풀링함수에서의 gradients를 계산함

tf.raw_ops.MaxPoolGrad(orig_input, orig_output, grad, ksize, strides, padding, explicit_paddings=[],data_format='NHWC', name=None)
  • Device_AvgPool

  • Device_AvgPoolGrad

average pooling functino 에서 gradients를 구한다


  • Device_Mul

곱셈 x * y 값을 리턴

  • Device_RealDiv

x/y 값을 리턴함


  • Device_Relu

Same shape as the input.

tf.keras.layers.ReLU(max_value=None, negative_slope=0, threshold=0, **kwargs)
  • Device_ReluGrad
tf.raw_ops.ReluGrad(gradients, features, name=None)
  • Device_ResourceApplyGradientDescent

알파와 델타를 뺴고 var을 업데이트한다.

  • Device_Softmax

활성화함수, 입력받은 값을 출력으로 0-1사이의 값을 모두 정규화하며,출력값들의 총합은 항상1

  • Device_SoftmaxCrossEntropyWithLogits

소프트맥스 교차 엔트로피의 cost와 gradients 를 계산하여 역전파한다.

tf.raw_ops.SoftmaxCrossEntropyWithLogits(features, labels, name=None)

  • Device_Sum

텐서 차원에서 모든 요소들의 합을 계산한다.

tf.raw_ops.Sum(input, axis, keep_dims=False, name=None)
  • Device_Tile

주어진 텐서를 타일링하여 새 텐서를 만들어낸다

e.g. tf.tile([a,b,c,d]) → [a,b,c,d,a,b,c,d] 이런 텐서를 얻을수가 있다.

  • Device_Unknown

unknown shpae ⇒ TensorShape(None), TensorShape([None, 256]) ....

  • Device__FusedConv2D

Conv2D의 data_format 속성은이 작업에서 지원되지 않으며 대신 'NHWC'순서가 사용됨. 내부적으로이 작업은 그래프 당 단일 스크래치 버퍼를 사용하므로 여러 버전이 병렬로 실행되는 경우 차단된다. 이것은이 연산자가 주로 메모리 사용을 최소화하기위한 최적화이기 때문이다.

  • Device__HostRecv
  • Host_FlushSummaryWriter
tf.summary.flush(writer=None, name=None)
  • Host_IteratorGetNext

주어진 Iterator에서다음 출력을 가져옴

tf.raw_ops.IteratorGetNext(iterator, output_types, output_shapes, name=None)
  • Host_LogicalAnd

Device_LogicalAnd 과 곂침

  • Host_WriteSummary

텐서의 summary를 적는다.

tf.raw_ops.WriteSummary(writer, step, tensor, tag, summary_metadata, name=None)
  • Device_Square

x안에 있는 요소들을 제곱으로 만들어준다

tf.math.square([-2., 0., 3.])[4., 0., 9.]
  • Device_Mean

평균을 구해준다. 예를들어서, 만약 value들이 [1, 3, 5, 7] 라고 하면 mean 은 4

  • Device_BroadcastTo

산술연산을 위해 호환되는 모양을 갖도록 배열을 만드는 프로세스.

x = tf.constant([1, 2, 3]) 
y = tf.broadcast_to(x, [3, 3]) 
print(y)
>> tf.Tensor( [[1 2 3] [1 2 3] [1 2 3]], shape=(3, 3), dtype=int32)

+ Recent posts