gpt4 book ai didi

python - Theano中变量的形状有什么区别

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:26 25 4
gpt4 key购买 nike

你能告诉我 Theano 中的形状 0、(?,)、(1,?)、(?,?) 有什么区别吗?为什么我定义的数组为

arr = np.array([1,2,3])

是 (3,) 的数组吗?我如何定义 (3,1) 的数组?

另外,我写的代码如下:

import theano.tensor as T
from theano import shared
import numpy as np
from theano import function


class hiddenLayer():
""" Hidden Layer class
"""
def __init__(self, inputs, n_in, n_out, act_func):
rng = np.random
self.W = shared(np.asarray(rng.uniform(low=-4*np.sqrt(6. / (n_in + n_out)),
high=4*np.sqrt(6. / (n_in + n_out)),
size=(n_in, n_out)),
dtype=T.config.floatX),
name='W')
self.inputs = inputs
self.b = shared(np.zeros(n_out, dtype=T.config.floatX), name='b')
self.x = T.dvector('x')
self.z = T.dot(self.x, self.W) + self.b
self.ac = function([self.x], self.z)

a = hiddenLayer(np.asarray([1, 2, 3], dtype=T.config.floatX), 3, 3, T.tanh)
print a.ac(a.inputs, a.z)

为什么会报错:

  'Expected an array-like object, but found a Variable: '
TypeError: ('Bad input argument to theano function at index 1(0-based)', 'Expected an array-like object, but found a Variable: maybe you are trying to call a function on a (possibly shared) variable instead of a numeric array?')

非常感谢!

最佳答案

您正在尝试将 a.z 传递给 a.ac(),而 a.z 实际上是结果 a.ac(x)!

相反,您可能想要这样做:

a.ac(a.inputs)
# array([ 8.61379147, -13.0183053 , -4.41056323])

符号变量a.z的值在a.xa.Wa.b都可以计算之前是不确定的. theano.function 的语法像这样工作:

find_x = theano.function([<inputs needed to compute x>], <output x>)

当你真正想调用find_x()时,你只需要给它方括号里的东西,theano.function的第二个参数就是find_x() 的返回值。

关于python - Theano中变量的形状有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com