나는 주어진 mnist 튜토리얼을 따랐고 모델을 훈련시키고 그 정확성을 평가할 수있었습니다. 그러나이 자습서에서는 모델에 대해 예측하는 방법을 보여주지 않습니다. 정확성에는 관심이 없습니다. 모델을 사용하여 새로운 예를 예측하고 출력에서 각각 할당 된 점수 (정렬 여부)와 함께 모든 결과 (레이블)를보고 싶습니다.
나는 주어진 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
이는 생성하는 거의 모든 모델에 적용됩니다. 손실을 계산하기 전에 마지막 단계 중 하나로 예측 확률을 계산하게됩니다.
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
내가 얻을 Invalid argument: You must feed a value for placeholder tensor 'Placeholder_2' with dtype float
, 간단한 softmax를 예를 들어 그것을 잘 작동합니다 어떤 아이디어 왜 이렇게되는지.?
feed_dict = {x: [your_image], keep_prob:1.0}
tf.run()
제거 된 것 같지만 y.eval(feed_dict)
나를 위해 일했습니다.
@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]
2.0 호환 가능 답변 : 아래와 같이 Keras 모델을 구축했다고 가정합니다.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
그런 다음 아래 코드를 사용하여 모델을 훈련하고 평가합니다.
model.fit(train_images, train_labels, epochs=10)
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
그 후 특정 이미지의 클래스를 예측하려면 아래 코드를 사용하여 수행 할 수 있습니다.
predictions_single = model.predict(img)
이미지 집합의 클래스를 예측하려면 아래 코드를 사용할 수 있습니다.
predictions = model.predict(new_images)
new_images
이미지 배열은 어디에 있습니까 ?
자세한 내용은이 Tensorflow 가이드를 참조하세요 .
질문은 특히 예측자를 정의하지만 적용하지 않는 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()