#피처들 목록
'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)
'<개념> > Deep learning' 카테고리의 다른 글
opencv로 동영상 자르기+ YOLO 적용 (0) | 2021.06.25 |
---|---|
[Hierarchical Clustering] 계층적 클러스터링 개념정리 (0) | 2021.05.09 |
베이지안 옵티마이제이션 정리 (Bayesian optimization) (1) | 2021.03.21 |
Coursera Andrew NG - 1 (0) | 2021.02.23 |
차원축소 개념 총정리 (0) | 2021.01.15 |
Uploaded by Notion2Tistory v1.1.0