У меня есть простая замороженная модель тензорного потока (замороженная в Керасе), которую я загружаю и затем пытаюсь использовать для прогнозирования.Я делаю это сначала в Python (код ниже), а затем использую C и libtensorflow (и получаю те же результаты).Примеры, которые я нашел, предоставляют логиты (до активации) в качестве конечного результата, а не метку класса после активации.Есть ли способ получить метку через сам график?
Я понимаю, что могу управлять операторами sigmoid / softmax на логитах, но это не то, что я хочу делать.(Я портирую код для использования libtensorflow C api и предпочел бы, чтобы граф выполнял математику.)
Насколько я понимаю, сеанс запускает граф до операции / тензора и останавливается до того, какэта операция.Есть ли способ получить операцию после активации?
Keras Модель:
model = Sequential()
model.add(Dense(100, activation='relu', input_shape=(21,)))
model.add(Dense(1, activation='sigmoid'))
Код Tensorflow для загрузки замороженной модели и прогнозирования:
from tensorflow.python.platform import gfile
with tf.Session() as sess:
with gfile.FastGFile('slopemodel/slopemodel.pb', 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
sess.graph.as_default()
g_in = tf.import_graph_def(graph_def)
tensor_output = sess.graph.get_tensor_by_name('import/dense_2/Sigmoid:0')
tensor_input = sess.graph.get_tensor_by_name('import/dense_1_input:0')
predictions = sess.run(tensor_output, {tensor_input:sample})
print(predictions)
Усеченный списокважных узлов на графе:
['import/dense_1_input',
'import/dense_1/kernel',
'import/dense_1/kernel/read',
'import/dense_1/bias',
'import/dense_1/bias/read',
'import/dense_1/MatMul',
'import/dense_1/BiasAdd',
'import/dense_1/Relu',
'import/dense_2/kernel',
'import/dense_2/kernel/read',
'import/dense_2/bias',
'import/dense_2/bias/read',
'import/dense_2/MatMul',
'import/dense_2/BiasAdd',
'import/dense_2/Sigmoid',
'import/Adam/iterations',
.
.
.]