Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keras(+;tensorflow)不能仅用部分序列数据进行预测_Tensorflow_Deep Learning_Keras - Fatal编程技术网

Keras(+;tensorflow)不能仅用部分序列数据进行预测

Keras(+;tensorflow)不能仅用部分序列数据进行预测,tensorflow,deep-learning,keras,Tensorflow,Deep Learning,Keras,我现在正在使用Keras和tensorflow构建一个立体匹配网络。该网络具有以下结构: 在对整个网络进行培训之后,我需要对其进行测试。然而,培训阶段和测试阶段是完全不同的。我得把模型分成两部分。第一个部分是CNN+连接,它只需要运行一次,而完全连接的部分(实际上我在测试时将其修改为完全转换形式)需要使用稍微不同的输入运行d次,其中d从100到228不等 第一部分网络代码: # input image dimensions img_rows, img_cols = X1.shape[0], X

我现在正在使用Keras和tensorflow构建一个立体匹配网络。该网络具有以下结构:

在对整个网络进行培训之后,我需要对其进行测试。然而,培训阶段和测试阶段是完全不同的。我得把模型分成两部分。第一个部分是CNN+连接,它只需要运行一次,而完全连接的部分(实际上我在测试时将其修改为完全转换形式)需要使用稍微不同的输入运行d次,其中d从100到228不等

第一部分网络代码:

# input image dimensions
img_rows, img_cols = X1.shape[0], X1.shape[1]
input_shape = (img_rows, img_cols, 1)
X1 = X1.reshape(1, img_rows, img_cols, 1)
X2 = X2.reshape(1, img_rows, img_cols, 1)

# number of conv filters to use
nb_filters = 112

# CNN kernel size
kernel_size = (3,3)

left_branch = Sequential()
left_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same', input_shape=input_shape))
left_branch.add(Activation('relu'))
left_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same'))
left_branch.add(Activation('relu'))
left_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same'))
left_branch.add(Activation('relu'))
left_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same'))
left_branch.add(Activation('relu'))

right_branch = Sequential()
right_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same', input_shape=input_shape))
right_branch.add(Activation('relu'))
right_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same'))
right_branch.add(Activation('relu'))
right_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same'))
right_branch.add(Activation('relu'))
right_branch.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='same'))
right_branch.add(Activation('relu')) 
merged = Merge([left_branch, right_branch], mode='concat')

cnn = Sequential()
cnn.add(merged)
我将从训练阶段获得的权重加载到网络的第一部分,并尝试对其进行预测

def load_cnn_weights(filepath):
    f = h5py.File(filepath, mode='r')
    weights = []
    for i in range(1, 9):
        weights.append(f['model_weights/conv2d_{}/conv2d_{}/kernel:0'.format(i, i)][()])
        weights.append(f['model_weights/conv2d_{}/conv2d_{}/bias:0'.format(i, i)][()])
    f.close()
    return weights

weights = load_cnn_weights("/home/users/shixin.li/segment/Lecun_stereo_rebuild/weights.hdf5") 
cnn.set_weights(weights)
output_cnn = cnn.predict([X1, X2]) 
我已经通过调用
get\u weights()
函数检查了权重是否已成功读取,并且是否能够适应网络。X1和X2不是零,它们是标准化灰度图像矩阵。我甚至试着在预测之前编辑网络。但是结果
output\u cnn
给出的都是零


我没有看到任何人有这个问题,我被困了两天。真正让我困惑的是,输入和权重都不是零,那么为什么结果是零呢?如果你能帮忙,我会非常感激的

您可能想尝试使用来找出所有零输出的op的确切输入是什么,以了解发生了什么。

您可能想尝试使用来找出所有零输出的op的确切输入是什么,以了解发生了什么