IT박스

TensorFlow 모델로 예측하기

itboxs 2020. 10. 15. 07:36
반응형

TensorFlow 모델로 예측하기


나는 주어진 mnist 튜토리얼을 따랐고 모델을 훈련시키고 그 정확성을 평가할 수있었습니다. 그러나이 자습서에서는 모델에 대해 예측하는 방법을 보여주지 않습니다. 정확도에는 관심이 없습니다. 모델을 사용하여 새로운 예를 예측하고 출력에서 ​​모든 결과 (레이블)를보고 각각에 할당 된 점수 (정렬 여부)를 확인하고 싶습니다.


" Deep MNIST for Experts "예제에서 다음 행을 참조하십시오.

이제 회귀 모델을 구현할 수 있습니다. 한 줄이면됩니다! 벡터화 된 입력 이미지 x에 가중치 행렬 W를 곱하고 편향 b를 더한 다음 각 클래스에 할당 된 소프트 맥스 확률을 계산합니다.

y = tf.nn.softmax(tf.matmul(x,W) + b)

노드 y를 당기면 원하는 것을 얻을 수 있습니다.

feed_dict = {x: [your_image]}
classification = tf.run(y, feed_dict)
print classification

이는 생성하는 거의 모든 모델에 적용됩니다. 손실을 계산하기 전에 마지막 단계 중 하나로 예측 확률을 계산했습니다.


@dga가 제안했듯이 이미 예측 된 모델을 통해 데이터의 새 인스턴스를 실행해야합니다.

다음은 그 예입니다.

첫 번째 튜토리얼을 진행하고 모델의 정확도를 계산했다고 가정합니다 (모델은 다음과 같습니다 y = tf.nn.softmax(tf.matmul(x, W) + b):). 이제 모델을 잡고 여기에 새 데이터 포인트를 적용합니다. 다음 코드에서는 벡터를 계산하여 최대 값의 위치를 ​​얻습니다. 이미지를 표시하고 최대 위치를 인쇄합니다.

from matplotlib import pyplot as plt
from random import randint
num = randint(0, mnist.test.images.shape[0])
img = mnist.test.images[num]

classification = sess.run(tf.argmax(y, 1), feed_dict={x: [img]})
plt.imshow(img.reshape(28, 28), cmap=plt.cm.binary)
plt.show()
print 'NN predicted', classification[0]

질문은 특히 예측자를 정의하지만 적용하지 않는 Google MNIST 자습서 에 관한 것입니다. Jonathan Hui의 TensorFlow Estimator 블로그 게시물의 지침을 사용하여 다음은 Google 가이드에 정확히 일치하고 예측을 수행하는 코드입니다.

from matplotlib import pyplot as plt

images = mnist.test.images[0:10]

predict_input_fn = tf.estimator.inputs.numpy_input_fn(
      x={"x":images},
      num_epochs=1,
      shuffle=False)

mnist_classifier.predict(input_fn=predict_input_fn)

for image,p in zip(images,mnist_classifier.predict(input_fn=predict_input_fn)):
    print(np.argmax(p['probabilities']))
    plt.imshow(image.reshape(28, 28), cmap=plt.cm.binary)
    plt.show()

참고 URL : https://stackoverflow.com/questions/33711556/making-predictions-with-a-tensorflow-model

반응형