Импорт графика нейронной сети в новом сеансе - Tensorflow

Я построил нейронную сеть по такой функции:

def multilayer_perceptron():
    tf.reset_default_graph()
    inputs = tf.placeholder(tf.float32, shape=[None,train_x.shape[1]], name='inputs')
    y = tf.placeholder(tf.float32, shape=[None, 1], name='y')
    weights = {
    'h1': tf.Variable(tf.random_normal([train_x.shape[1], n_hidden_1])),
    'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
    'out': tf.Variable(tf.random_normal([n_hidden_2, 1]))
    }
    biases = {
    'b1': tf.Variable(tf.random_normal([n_hidden_1])),
    'b2': tf.Variable(tf.random_normal([n_hidden_2])),
    'out': tf.Variable(tf.random_normal([1]))
    }
    # Hidden layer con funzione di attivazione ReLU
    layer_1 = tf.add(tf.matmul(inputs, weights['h1']), biases['b1'], name='Layer_1_mat')
    layer_1 = tf.nn.relu(layer_1, name ='layer_1_relu')
    # Hidden layer with ReLU activation
    layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'], name='Layer_2_mat')
    layer_2 = tf.nn.relu(layer_2, name ='vars')#layer_2_relu')
    # Output layer with linear activation
    out_layer = tf.matmul(layer_2, weights['out'], name ='out_layer') + biases['out'] 
    learning_rate = tf.placeholder(tf.float32, name = 'vars') #learning_rate')
    is_training=tf.Variable(True,dtype=tf.bool) 
    cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(labels=y,logits=out_layer, name='cross_entropy')
    cost = tf.reduce_mean(cross_entropy, name='cost')  
    with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
         optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
    predicted = tf.nn.sigmoid(out_layer, name='predicted') 
    correct_pred = tf.equal(tf.round(predicted), y)
    accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32), name='accuracy')

    # Export the nodes 
    export_nodes = ['inputs', 'y', 'learning_rate','is_training', 'out_layer',
                    'cost', 'optimizer', 'predicted',  'accuracy'] 
    Graph = namedtuple('Graph', export_nodes)
    local_dict = locals()
    graph = Graph(*[local_dict[each] for each in export_nodes])
    return graph

pred1 = multilayer_perceptron()

Добавьте в коллекцию функцию:

tf.add_to_collection('pred_func', pred1)

Затем я запускаю сеанс и сохраняю его в файле.ckpt. Когда я запускаю новый сеанс для импорта модели:

import tensorflow as tf

sess = tf.Session()
new_saver = tf.train.import_meta_graph('model.ckpt.meta')
new_saver.restore(sess, tf.train.latest_checkpoint('./'))

graph = tf.get_default_graph()

Импортировать тензор

inputs = graph.get_tensor_by_name("inputs:0")
predict_restore = graph.get_tensor_by_name("predicted:0")

Импортируйте CSV с датой поезда:

train_predict_restore = train_data = pd.read_csv(r"....\file.csv")

Запустить новую сессию:

feed_dict={inputs:train_predict_restore}
sess.run(predict_restore,feed_dict)

Наконец, верните эту ошибку: ValueError: не удалось преобразовать строку в число с плавающей точкой: 'Q' Я думаю, что импорт модели некорректен

Есть способ для импорта пред1?

0 ответов

Другие вопросы по тегам