2017.07.07(금) 이후
eval() 메소드 하는 역할이 뭔지?
eval을 안하면 이런 식으로 Tensor Type으로 나온다.
<tf.Tensor 'MatMul:0' shape=(2, 1) dtype=float32>
eval을 하면 Array타입으로 바뀐다.
array([[ 5.],
[ 11.]], dtype=float32)
argmax, argmax 차이점?
One hot 메소드 좀 더 자세히 보기
Stack 축 바꿔서 돌려보기
Tensor Manipulation .. 처음에 나온 Axis 다시 한번 보기(Stack에서 axis=1 일 때 열 기준으로 합치는 것 처럼 보임)
Stack에서 axis=1 일 때 열 기준으로 합치는 것 처럼 보임
###### 2.argmax, arg_max 차이점
arg_max와 argmax는 같은 기능을 하는데 arg_max는 곧 deprecated 될 메소드이다.
argmax 소스 코드를 보면 그 안에서 오류 처리를 하고 정상이면 arg_max를 호출하는 형태로 기능상 오류 처리가 추가된 거라고
봐도 무방하다.
# pylint: disable=redefined-builtin
# TODO(aselle): deprecate arg_max
def argmax(input, axis=None, name=None, dimension=None):
if dimension is not None:
if axis is not None:
raise ValueError("Cannot specify both 'axis' and 'dimension'")
axis = dimension
elif axis is None:
axis = 0
return gen_math_ops.arg_max(input, axis, name)
###### 4. Stack 축 바꿔서 돌려보기
###### Stack - (https://wooil.gitbooks.io/mlearn/content/tensor-manipulation.html)
>>> tf.stack([x, y, z], axis=0).eval(session=sess)
array([[1, 4],
[2, 5],
[3, 6]], dtype=int32)
>>> tf.stack([x, y, z], axis=1).eval(session=sess)
array([[1, 2, 3],
[4, 5, 6]], dtype=int32)
>>> tf.stack([x, y, z]).eval(session=sess)
array([[1, 4],
[2, 5],
[3, 6]], dtype=int32)
2017.07.12(수) 이후
strides 소스 코드에 들어가는 배열에 어떤 값이 들어가는지 파악해보기 [1, 2, 2, 1] ... 여기서 앞 뒤의 1이 뭔 의미인지
링크 참조
stride = [batch, width, height, depth]
batch 값을 1로 설정한 이유는 필터에 내용을 넣을 때 모든 이미지의 원소를 다 넣고 싶기 때문이다. depth를 1로 설정한 이유도 같다.
reshape을 할 때 [-1, 28, 28, 1]이라는 값이 있으면 이건 [batch_size, width, height, channel]을 의미한다.
batch size를 -1로 두면 자동으로 batch size를 조정하겠다는 뜻이다. 따라서 배치 사이즈를 변경해야 하더라도 reshape의 batch size 크기를 바꿔줄 필요가 없게 된다.
MNIST 왜 784였지?
28*28 크기의 이미지를 사용하기 때문에 784 = 28 * 28
Exercise ... Deep & Wide, CIFAR 10, ImageNet
이 링크보고 한번 해보기
Lab 12 . RNN-Basic에서 출력 갯수를 2로 했는데 [[[-0.017, -0,1289], ... 이게 무엇을 의미하는지 모르겠다.
마지막 결과값에서 안에 있는 값들을 비교하여 제일 큰 값으로 예측한다. (one hot)
아래에서 타겟이 Y, N 일때의 차이점은?
tf.contrib.seq2seq.sequence_loss(logits=outputs, targets=Y, weights=weights)