Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow:我的模型预测总是一样的_Python_Tensorflow_Conv Neural Network - Fatal编程技术网

Python Tensorflow:我的模型预测总是一样的

Python Tensorflow:我的模型预测总是一样的,python,tensorflow,conv-neural-network,Python,Tensorflow,Conv Neural Network,我训练了一个深度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.listdi

我训练了一个深度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)
时,下面的输出都是
0
,这意味着我的预测
y_conv
不会在每个循环中更新


我不知道哪里错了。如果您有任何反馈或建议,我将不胜感激。

您的代码对我来说很好。请用下面的格式试一试

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)

为什么要传递网络的
y\u conv=tf.常数(0)?
Is
y\u conv
输出?谢谢您的建议。我已经找到了原因,因为我的模型不太合适。如果你喜欢我的建议,请接受我的回答并投票表决。谢谢。