Tensorflow에서 간단한 LSTM 구현과 치수 문제가 있습니다. 그래서, 내Tensorflow RNN 모양이 일치하지 않습니다. logits_size = [5,2] labels_size = [50,2] - 일괄 처리 크기가 10입니다.
batch size = 10
time_steps = 5
num_classes = 2
input_size = 4
자리 표시자는
y = tf.placeholder('float',[None,None,num_classes])
은 내가 _x.shape = (10, 5, 4)
을 설정 한 csv 파일
_, c = sess.run([optimizer, cost], feed_dict={x: _x, y: _y})
에서 데이터를 공급함으로써 실행
x = tf.placeholder('float',[None,time_steps,input_size])
_y.shape = (10, 5, 2)
i TF의
(batch,time_steps, input_size)
요구 사항에 따라.
저는 인터넷 및 블로그 게시물에서 몇 가지 구현 (주로 MNIST 데이터 세트)을 수행했으며 어떻게 작동하는지 이해했다고 생각합니다. TF는 logits 및 labels 인수가 batch_size 행 및 num_classes 열을 사용하여 2 차원 텐서가 될 것으로 예상합니다. 이제 각 항목에 분류 레이블이 있습니다. 나는 그것들을 원 핫 포맷으로 변환했다. 데이터에서 총 50 개의 항목을 제공하면 50 개의 레이블도 제공해야합니다. 맞습니까?
y 자리 표시자를 [None,num_classes]
으로 변경하면 결과적으로 오류가 발생합니다.
batch_size
1로 변경하는 경우, I 라인 I 오류가 발생하는
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
때까지 실행하는 코드를 얻을 수 y는 (?, ?, 2)
(5, 2)
입니다
ValueError: Dimensions must be equal, but are 5 and 2 for 'Equal' (op: 'Equal') with input shapes: [5], [?,2].
때문에
그것이 어떻게 작동해야 하는지를 이해하는데 근본적인 실수가 있습니까?
전체 코드
는 Simple RNN Gist감사
코드의
감사 : 이것은 작동하는 것 같습니다. 그래서 제가 모은 것에서,이 예제에서 3D 라벨 (제 경우에는 10x5x2) 형태로 레이블을 제공하면 비용 함수를 적용하기 전에 2D 텐서 (여기서는 50x2)로 축소해야합니다 ? 그리고 3D 매트릭스의 형태로 반환되는 예측에 대해 동일한 작업을 수행해야했습니다. –
정확합니다. 사실 이것은 내가 간략하게 설명한 간단한 발췌 문장에서 내가하는 일입니다. 당신이 대답에 만족하는 경우 그것을 해결로 표시 자유롭게 :) –
미심쩍어 의심 그래서 내가 여기에 스스로 물어 볼 수도 있습니다. 이 경우 CSV 파일에서 행을 가져 와서 형식을 지정하여 모델에 공급하는 경우 일부 테스트 데이터 (또는 교육 자체)의 정확도를 계산하는 방법은 무엇입니까? 간단한'sess.run (정확도, feed_dict = {x : mnist.test.images, y_ : mnist.test.labels})'은 충분하지 않습니다. 약간의 명확성을주기 위해 요점을 업데이트했습니다. 고마워요. –