贝叶斯神经网络 PYMC3 代码执行中的问题..错误:'变量类型字段必须是 TensorType', 程序:

问题描述

我正在尝试执行以下程序,但显示以下错误

('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)

解决方法

我通过将稀疏输入矩阵转换为密集输入矩阵来解决上述错误 ....感谢所有的建议....