评估Tensorflow张量

时间:2019-03-12 13:17:17

标签: tensorflow tensorboard tensorflow-datasets tensorflow-estimator

获得相对于输入的输出梯度, 可以使用

grads = tf.gradients(model.output, model.input)

其中grads =

[<tf.Tensor 'gradients_81/dense/MatMul_grad/MatMul:0' shape=(?, 18) dtype=float32>]

这是一个模型,其中有18个连续输入和1个连续输出。

我假设这是一个符号表达式,并且需要18个条目的列表才能将其馈送到张量,以便它以浮点数形式给出导数。

我会使用

Test =[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]
with tf.Session() as sess:
    alpha = sess.run(grads, feed_dict = {model.input : Test})
    print(alpha)

但是我得到了错误

FailedPreconditionError (see above for traceback): Error while reading resource variable dense_2/bias from Container: localhost. This could mean that the variable was uninitialized. Not found: Container localhost does not exist. (Could not find resource: localhost/dense_2/bias)
     [[Node: dense_2/BiasAdd/ReadVariableOp = ReadVariableOp[dtype=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](dense_2/bias)]]

怎么了?

编辑: 这就是之前发生的事情:

def build_model():
    model = keras.Sequential([ 
            ...])
    optimizer = ...
    model.compile(loss='mse'... ) 
    return model 


model = build_model()
history= model.fit(data_train,train_labels,...)
loss, mae, mse = model.evaluate(data_eval,...)

到目前为止的进展:

Test =[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]

with tf.Session() as sess:
    tf.keras.backend.set_session(sess)
    tf.initializers.variables(model.output)
    alpha = sess.run(grads, feed_dict = {model.input : Test})

也无法正常工作,并显示错误消息:

TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed. Use `if t is not None:` instead of `if t:` to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor.

0 个答案:

没有答案