问题描述
('Variable type field must be a TensorType.',<Sparse[float64,csr]>,Sparse[float64,csr])
我不知道这行有什么问题:
acts_1= pm.math.sigmoid(pm.math.dot(ann_input,weights_in_1))
谁能帮忙解决这个问题?提前致谢。
程序:
import theano.tensor as tt
import pymc3 as pm
X = x_vector.astype(floatX)
Y = y.astype(floatX)
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=.3)
ann_input = theano.shared(X_train.astype('float64'))
ann_output = theano.shared(Y_train.astype('float64'))
# Initialize random weights between each layer
init_1 = np.random.randn(20,6).astype(floatX)
with pm.Model() as nn_model:
mu_a = pm.normal('mu_a',mu=0.,sigma=100)
sigma_a = pm.Halfnormal('sigma_a',100.)
weights_in_1 = pm.normal('w_1',mu=mu_a,sd=sigma_a,shape=(20,6),testval=init_1)
acts_1= pm.math.sigmoid(pm.math.dot(ann_input,weights_in_1))
# Define likelihood
out = pm.Multinomial('likelihood',n=1,p=acts_1,observed= ann_output)
step = pm.Metropolis()
trace = pm.sample(50000,step=step)
解决方法
我通过将稀疏输入矩阵转换为密集输入矩阵来解决上述错误 ....感谢所有的建议....