【问题标题】:how to send values to function using feed_dict in tensorflow?如何在 tensorflow 中使用 feed_dict 向函数发送值?
【发布时间】:2017-08-02 03:51:55
【问题描述】:

我是 tensorflow 的初学者,我正在做一个项目,我想将值发送到占位符并在函数中使用此占位符,以便简化我想要的。

这是一个简单的代码

import tensorflow as tf
import glob
from PIL import Image
import numpy as np
import math
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

x = tf.placeholder(dtype=tf.float32,shape=[1])

def fun():
    print(x)
    return x

with tf.Session() as sess:
    sess.run(fun(),feed_dict={x:[5.]})

我想在函数中使用 X 值,但是当我打印它时,我只得到了形状,但是我使用 sess.run 来运行函数,所以我期望打印值而不是形状,但当我使用 print(sess.run(x)) 时,它会给我错误并说 我必须给 X 提供值 那是什么我失踪了?

【问题讨论】:

    标签: tensorflow neural-network


    【解决方案1】:

    你应该这样写:

    x = tf.placeholder(dtype=tf.float32,shape=[1])
    
    
    def fun():
        return x
    
    
    with tf.Session() as sess:
        y=sess.run(fun(),feed_dict={x:[5.]})
        print(y)
    

    【讨论】:

    • 为什么我需要将 X 发送到作为全局变量的函数? , 但是,当我将它发送到函数时,它也只打印张量对象,我想在函数的某些代码中使用它的值,而不是在 sess.run 之后
    • 您不必发送 X,请参阅我编辑的回复。我编写的代码使您能够使用 y 中的值。如果你想使用它,你需要将它分配给一个变量,这就是它被写成“y=...”的原因。
    • 不,我想在 Fun() 中使用 X 值,我在项目中使用了相同的方式,我想在某些代码中使用函数内部的占位符值,而这种馈送语法不将值发送给它,我不能使用它的值,只给我张量对象。
    • 你可以在里面使用它。例如,如果你执行 def fun(): a=3*x return a,然后运行会话并打印 y,你将得到 [15.]
    • 只要 fun() 没有得到输入,就可以运行 y=sess.run(fun(),feed_dict={x:[5.]}) (也就是说,你没有发送 x 来玩)。如果您将 fun 定义为 x 作为输入,则在运行会话时必须传递输入,所以它应该是 y=sess.run(fun(x),feed_dict={x:[5.]})
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    相关资源
    最近更新 更多