Как экспортировать модель TensorFlow в формат SavedModel - PullRequest
0 голосов
/ 09 сентября 2018

Я создал следующую модель который мне нужно экспортировать в формате SavedModel. Вот мой код Может кто-нибудь, пожалуйста, дайте мне знать, как сделать экспорт? Я понимаю, что мне нужно использовать save_model_builder вместе с signature_constants и signature_def_utils. Я не уверен, как я могу сделать это в этом примере.

Обучить набор данных

size_data = numpy.asarray([2104, 1600, 2400, 1416, 3000, 1985, 1534, 1427,
                           1664, 2238, 2567, 1200, 852, 1852, 1203])
price_data = numpy.asarray([399900, 329900, 369000, 232000, 539900, 299900, 
                           329900, 314000, 299000, 179900, 299900, 239500])

Проверка набора данных

size_data_test = numpy.asarray([1600, 1494, 1236, 1100, 3137, 2238])
price_data_test = numpy.asarray([329900, 242500, 199900, 249900, 579900, 
329900])

Нормализация набора данных

def normalize(array):
    return (array - array.mean()) / array.std()

size_data_n = normalize(size_data)
price_data_n = normalize(price_data)

size_data_test_n = normalize(size_data_test)
price_data_test_n = normalize(price_data_test)

Показать сюжет

plt.plot(size_data, price_data, 'ro', label='Samples data')
plt.legend()
plt.draw()

samples_number = price_data_n.size

TF график ввода

X = tf.placeholder("float")
Y = tf.placeholder("float")

Создать модель

# Set model weights
W = tf.Variable(numpy.random.randn(), name="weight")
b = tf.Variable(numpy.random.randn(), name="bias")

Задать параметры

learning_rate = 0.1
training_iteration = 200

Построить линейную модель

model = tf.add(tf.multiply(X, W), b)

# Minimize squared errors
cost_function = tf.reduce_sum(tf.pow(model - Y, 2)) / (2 * samples_number)  
# L2 loss
optimizer = 
tf.train.GradientDescentOptimizer(learning_rate).minimize(cost_function)  
#Gradient descent

# Initialize variables
init = tf.initialize_all_variables()

Запустить график

with tf.Session() as sess:
    sess.run(init)

    display_step = 20
    # Fit all training data
    for iteration in range(training_iteration):
        for (x, y) in zip(size_data_n, price_data_n):
            sess.run(optimizer, feed_dict={X: x, Y: y})

        # Display logs per iteration step
        if iteration % display_step == 0:
            print("Iteration:", '%04d' % (iteration + 1), "cost=", " 
  {:.9f}".format(sess.run(cost_function, feed_dict={X: size_data_n, Y: 
  price_data_n})), "W=", sess.run(W), "b=", sess.run(b))

    tuning_cost = sess.run(cost_function, feed_dict={X: 
    normalize(size_data_n), Y: normalize(price_data_n)})

    print("Tuning completed:", "cost=", "{:.9f}".format(tuning_cost), "W=", 
    sess.run(W), "b=", sess.run(b))

Проверка модели настройки

    testing_cost = sess.run(cost_function, feed_dict={X: size_data_test_n, 
    Y: price_data_test_n})

    print("Testing data cost:", testing_cost)
    # Display a plot
    plt.figure()
    plt.plot(size_data_n, price_data_n, 'ro', label='Normalized samples')
    plt.plot(size_data_test_n, price_data_test_n, 'go', label='Normalized 
    enter code heretesting samples')
    plt.plot(size_data_n, sess.run(W) * size_data_n + sess.run(b), 
    label='Fitted line')
    plt.legend()
    plt.show()

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете использовать функцию tf.saved_model.simple_save():

tf.saved_model.simple_save(sess, './',
                           inputs={'X': X},
                           outputs={'Y': Y})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...