试图理解变量。。。我能打印出来吗?

2024-04-20 12:46:48 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我们使用其中一个教程示例:

>>> a, b = T.dmatrices('a', 'b')
>>> diff = a - b
>>> f = function([a, b], [diff])
>>>> f([[1, 1], [1, 1]], [[0, 1], [2, 3]])
[array([[ 1.,  0.],
        [-1., -2.]]),

diff现在是否持有数组[[ 1., 0.],[-1., -2.]]?你知道吗

打电话后如何打印difff()?你知道吗

我很难理解这种功能性的用法。有人能解释一下吗?你知道吗


Tags: 示例用法difffunction教程数组array功能性
3条回答

我们不能打印符号var,因为它不记得实际值。你知道吗

但是,如果您声称diff是一个共享var,您可以执行以下操作: 打印差异值()

我认为你正面临学习Theano这个最困难的概念挑战。你知道吗

先回答你的具体问题

  1. 不,diff不包含数组[[ 1., 0.],[-1., -2.]]。就Python而言,diff是对Theano对象的引用。这个对象是一个符号变量,它本身从来没有或没有值。

  2. 当你问如何打印出diff时,我认为这意味着“我如何打印出diff作为引用的计算结果?”从某种意义上说,你已经在做了:diff是Theano函数的输出f,所以在f被编译之后,然后通过f([[1, 1], [1, 1]], [[0, 1], [2, 3]])执行,你会看到结果是[array([[ 1., 0.], [-1., -2.]])

困难的是将符号世界与具体的/可执行的世界分开。diff存在于符号世界中,因此从来没有真正的价值。通过theano.function(...)编译f之后发生的一切都在具体/可执行的世界中。需要注意的是,符号世界中的任何东西都不会受到具体/可执行世界中发生的事情的影响。你知道吗

同样重要的是要注意,diff不能“有值”(在任何意义上),直到它所依赖的符号变量,ab被赋予一个值。如果我提出一个数学问题,告诉你y = x * z,问你y有什么值,你就不能回答,除非我也告诉你xz有什么值。在这里也是如此,符号世界就像符号数学一样运作:它是一些计算的抽象定义,在提供编译和输入值之前,这些计算没有也不能有值。你知道吗

在开发无代码时,将符号代码从具体/可执行代码中分离出来分为两个独立的区域是很有帮助的。如果不这样做,您通常会发现,例如,想要调用符号变量x,但同时还想要为x提供一个具体的值,该值具有相同的名称。你知道吗

在控制台中,只需键入var名称

>>> diff

在python2中,使用print diff,在python3中,使用print(diff)

相关问题 更多 >