【问题标题】:make_node requires 4D tensor of kernelsmake_node 需要内核的 4D 张量
【发布时间】:2017-03-03 06:03:39
【问题描述】:

我已经训练了cnn模型并将参数保存在五个文件中,但是当我使用这些参数测试照片时,我遇到了这样的问题:enter image description here

load_data的代码是:

def load_data(pag_name):``
k = 0
for filename in os.listdir(pag_name):
    if (filename != '.DS_Store'):
        k = k + 1
num = k
# test_per = k*4
print k

i = 0
j = 0
label = 0

train_set = numpy.empty((num, 1, 56, 56))
while (j < 1):
    for filename in os.listdir(pag_name):
        if (filename != '.DS_Store'):
            filename = pag_name+ '/' + filename
            image = Image.open(filename)
            #print image.size
            #print image
            img_ndarray = numpy.asarray(image, dtype='float64') / 256
            img_ndarray = numpy.asarray([img_ndarray])
                    # train_set[i] = numpy.ndarray.flatten(img_ndarray)
            train_set[i] = img_ndarray
            #print train_set.shape
                    # print filename1
                    # print 'label:', label
                    # print 'i:',i
            i = i + 1
    j = j + 1

def shared_dataset(data_x, borrow=True):
    shared_x = theano.shared(numpy.asarray(data_x,
                                           dtype=theano.config.floatX),
                             borrow=borrow)
    return shared_x

train_set = shared_dataset(train_set)
print train_set.get_value(borrow=True).shape
return train_set

而use_CNN的代码是:

def use_CNN(pag_name,nkerns=[20,40,60]):
data = load_data(pag_name)
data_num = data.get_value(borrow=True).shape[0]
layer0_params,layer01_params,layer1_params,layer2_params,layer3_params = load_params()
x = T.matrix('x')

layer0_input = x.reshape((data_num,1,56,56))
layer0 = LeNetConvPoolLayer(
    input=layer0_input,
    params_W = layer0_params[0],
    params_b = layer0_params[1],
    image_shape=(data_num, 1, 56, 56),
    filter_shape=(nkerns[0], 1, 5,5),
    poolsize=(2, 2)`
)

我没有遇到过这个问题,也不知道在哪里以及如何更改我的代码。

【问题讨论】:

  • 您能提供您的LeNetConvPoolLayerclass 代码吗?
  • 谢谢。我已经解决了这个问题。因为我将 W 和 b 保存在一个文件中。但是当我加载参数时。这里有一些问题。
  • LeNetConvPoolLayer的代码是:
  • 我是第一次用,所以不知道怎么贴我的代码。。太长了,你可以给我你的email,我把我的代码发给你。
  • 哦,没关系,如果你的代码运行正确,你就不用给我看你的代码了。但是,对于未来的观众来说,最好通过解释如何解决这个问题来回答自己的问题

标签: python numpy theano keras


【解决方案1】:

这个错误的结果是参数不是4D的,我加载的参数是3D的,就像我的W和b是(20,1,5,5),但我加载的是(1,5,5),所以我遇到了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多