Ошибка сегментации API Tensorflow C

Я использовал Keras для обучения простого RNN с двумя слоями LSTM с отсевом. Я хочу загрузить граф .pb в tenorflow C API и использовать его для последующего прогнозирования, но я получил ошибку сегментации. Позже я обнаружил, что если я сохраню сеть такой же и только удаляю опцию отсева и заново обучу ее, то все работает нормально. Однако я хочу использовать один с Dropout, потому что точность прогнозирования данных лучше. Кто-то с предложениями? Примеров использования API-интерфейса tenorflow очень мало.

Вот где я получил ошибку сегментации:

TF_SessionRun(session, NULL,
&inputs[0], &input_values[0], static_cast<int>(inputs.size()),
&outputs[0], &output_values[0], static_cast<int>(outputs.size()),
NULL, 0, NULL, status);
// Assign the values from the output tensor to a variable and iterate over them
ASSERT(!output_values.empty());
float* out_vals = static_cast<float*>(TF_TensorData(output_values[0]));

Кстати, я использовал следующий код с веб-сайта, чтобы перейти с .mdl в Keras на .pb в тензорном потоке.
импортировать тензор потока как тф
импорт системы
импортировать numpy как np

# Create function to convert saved keras model to tensorflow graph
def convert_to_pb(weight_file,input_fld='',output_fld=''):

import os
import os.path as osp
from tensorflow.python.framework import graph_util
from tensorflow.python.framework import graph_io
from keras.models import load_model
from keras import backend as K# weight_file is a .h5 keras model file
output_node_names_of_input_network = ["pred0"]
output_node_names_of_final_network = 'output_node'

# change filename to a .pb tensorflow file
output_graph_name = weight_file[:-3]+'pb'
weight_file_path = osp.join(input_fld, weight_file)

net_model = load_model(weight_file_path)

num_output = len(output_node_names_of_input_network)
pred = [None]*num_output
pred_node_names = [None]*num_output

for i in range(num_output):
pred_node_names[i] = output_node_names_of_final_network+str(i)
pred[i] = tf.identity(net_model.output[i], name=pred_node_names[i])
print('output nodes names are: ', pred_node_names)
sess = K.get_session()

constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), pred_node_names)
graph_io.write_graph(constant_graph, output_fld, output_graph_name, as_text=False)
print('saved the constant graph (ready for inference) at: ', osp.join(output_fld, output_graph_name))

return output_fld+output_graph_name

tfpath = convert_to_pb(sys.argv[1],'./','./')
print 'tfpath: ', tfpath

затем

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]