解决tensorflow模型保存时Saver报错:TypeError: TF_SessionRun_wrapper: expected all values in input dict to be ndarray

TypeError: TF_SessionRun_wrapper: expected all values in input dict to be ndarray 

对于下面的实际代码:

import tensorflow as tf
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'


def myregression():
    with tf.variable_scope("data"):
        x = tf.random_normal([100, 1], mean=1.75, stddev=0.5)
        y_true = tf.matmul(x, [[0.7]]) + 0.8
    with tf.variable_scope("model"):
        # 权重 trainable 指定权重是否随着session改变
        weight = tf.Variable(tf.random_normal([int(x.shape[1]), 1], mean=0, stddev=1), name="w")
        # 偏置项
        bias = tf.Variable(0.0, name='b')
        # 构造y函数
        y_predict = tf.matmul(x, weight) + bias
    with tf.variable_scope("loss"):
        # 定义损失函数
        loss = tf.reduce_mean(tf.square(y_true - y_predict))
    with tf.variable_scope("optimizer"):
        # 使用梯度下降进行求解
        train_op = tf.train.GradientDescentOptimizer(0.1).minimize((loss))
    # 1.收集tensor
    tf.summary.scalar("losses", loss)
    tf.summary.histogram("weights", weight)
    # 2.定义合并tensor的op
    merged = tf.summary.merge_all()
    # 定义一个保存模型的op
    saver = tf.train.Saver()
    with tf.Session() as sess:
        tf.global_variables_initializer().run()
        # import matplotlib.pyplot as plt
        # plt.scatter(x.eval(), y_true.eval())
        # plt.show()
        print("初始化的权重:%f,偏置项:%f" % (weight.eval(), bias.eval()))
        # 建立事件文件
        filewriter = tf.summary.FileWriter('./tmp/summary/test/', graph=sess.graph)
        n = 0
        while loss.eval() > 1e-6:
            n += 1
            sess.run(train_op)
            summary = sess.run(merged)
            filewriter.add_summary(summary, n)
            print("第%d次权重:%f,偏置项:%f" % (n, weight.eval(), bias.eval()))
        saver.save(sess, "tmp/ckpt/model")
    return weight, bias


weight, bias = myregression()
# x_min,x_max = np.min(x.eval()),np.max(x.eval())
# tx = np.arange(x_min,x_max,100)

在github有讨论这个问题,其中一个叫

I ran into the same issue. I don't think it is directly an issue with tf see In my case I had not changed anything in

tf but installed some other packages which reinstalled amongst other things numpy. The following fixed the issue for me

pip uninstall numpy # Keep repeating till all version of numpy are uninstalled
pip install numpy

 就是先卸载numpy,在重新安装,但过程中有几个细节需要注意:

首先用管理员的权限打开cmd:

输入:

pip uninstall numpy

pip install numpy 

(加入上一步报错)pip install -U numpy

 

posted @ 2019-07-20 10:06  Timcode  阅读(2567)  评论(0编辑  收藏  举报