Как оценить модель CNTK, обученную с использованием примера кода SequenceClassification

Я использовал код, приведенный на https://github.com/Microsoft/CNTK/blob/v2.0/Examples/SequenceClassification/SimpleExample/Python/SequenceClassification.py для обучения модели. Как я могу это оценить?


person Bit Manipulator    schedule 25.06.2017    source источник


Ответы (3)



Я получил это следующим образом:

import cntk as C
from cntk.ops.functions import load_model # Note this
...
...
# saved the model after epochs
for i in range(500):
    mb = reader.next_minibatch(minibatch_size, input_map=input_map)
    trainer.train_minibatch(mb)
    classifier_output.save("model.dnn") # Note this
...
...
# loading the model
model = load_model("model.dnn") # Note this

# converted sentence to numbers and given as sequence
predScores = model(C.Value.one_hot([[1,238,4,4990,7223,1357,2]], 50466)) # Note this
predClass = np.argmax(predScores)
print(predClass)

где [[1,238,4,4990,7223,1357,2]] — это последовательность индексов слов в словарях (в основном вид последовательности, на которой происходило обучение, а 50466 — размер словаря.

person Bit Manipulator    schedule 27.06.2017
comment
Этот ответ хорош, но было бы лучше, если бы он продемонстрировал, как привязать читателя к оценке. Я не могу найти пример, который читает файл ctf, оценивает примеры с использованием модели и выводит прогнозы и необработанные оценки. - person Robert Sim; 29.08.2017

Маловероятно, что при обучении модели в CNTK вам не нужно использовать атрибуты create_reader/Minibatch. В основном потому, что тестовые/рабочие файлы обычно довольно маленькие. Оценка модели на самом деле довольно проста:

import cntk as C
import pandas as pd
import numpy as np

model = C.load_model(path_to_where_the_model_is_saved) # load your CNTK model

ds = pd.read_csv(filename, delimiter=",") # load your data of course
                                          # we are assuming all data come 
                                          # together in a single matrix

X = ds.values[:,0:28].astype('float32') # ensures the right type for CNTK
Y = ds.values[:,28].astype('float32')   # last column is the label

X= X / 255 # perform any necessary transformation if any

pred = model(X) # evaluate your test data

pred[pred > 0.5]=1
pred[pred!=1]=0
maxa=np.mean(Y==pred)

print("Accuracy {} ".format(maxa*100.0))
person agcala    schedule 09.01.2019