Тензор потока: прогноз моей модели всегда один и тот же - PullRequest
0 голосов
/ 13 февраля 2020

Я обучил глубокому CNN, который предсказывает одномерный массив и сохранил весовые переменные в формате .ckpt. Но когда я даю модели новые входные данные, она всегда выводит один и тот же массив. Я уже проверил предварительную обработку входов, и я уверен, что они в порядке. Вот код моего предсказания.

import pandas as pd
import numpy as np
import os
import tensorflow as tf
sess = tf.Session()
sess.run(tf.global_variables_initializer())

filename = os.listdir("D:/project/test datasets/image")
new_dir  = "D:/project/test datasets/"

for img in filename:
    img=os.path.splitext(img)[0]
    xs = pd.read_csv(new_dir+img+'.csv',index_col=0)
    xs = xs.values.flatten()
    xs = np.expand_dims(xs,0)

    saver = tf.train.import_meta_graph('model.ckpt.meta')
    saver.restore(sess, 'model.ckpt')  

    graph = tf.get_default_graph()  
    x = graph.get_tensor_by_name("x:0")  
    keep_prob = graph.get_tensor_by_name("keep_prob:0")
    y_conv = graph.get_tensor_by_name("y_conv:0")

    print(sess.run(y_conv,feed_dict={x:xs,keep_prob:1.0}))

И я также обнаружил, что когда я добавляю оператор кода y_conv = tf.constant(0) в конце l oop, следующий результат будет 0 , что означает, что мое предсказание y_conv не обновляется в каждом l oop.

Я понятия не имею, где не так. Буду признателен за любые отзывы и советы.

1 Ответ

0 голосов
/ 07 апреля 2020

Ваш код выглядит нормально для меня. Пожалуйста, можете попробовать в следующем формате

with tf.Session() as sess:
    saver = tf.train.import_meta_graph(savefile)
    saver.restore(sess, tf.train.latest_checkpoint(savedir))

    graph = tf.get_default_graph()
    input_x = graph.get_tensor_by_name("input_x:0")
    result = graph.get_tensor_by_name("result:0")

    feed_dict = {input_x: x_data,}

    predictions = result.eval(feed_dict=feed_dict)
...