Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Python 在keras中的模型定义内更改给定给模型的输入的输入形状_Python_Numpy_Keras - Fatal编程技术网

Python 在keras中的模型定义内更改给定给模型的输入的输入形状

Python 在keras中的模型定义内更改给定给模型的输入的输入形状,python,numpy,keras,Python,Numpy,Keras,我目前在解决此问题时遇到问题 我有一个网络,在这个网络中,我以各种形状为食 (batch_size,40,45,3) 但我想对每一行进行1d卷积,然后将每个结果附加到一个列表中 这要求我能够以某种方式提取输入的行,但是如何访问模型定义中的输入数据 这就是目前的情况: def row_convolution(input): filter_size = 8 for units in xrange(splits): extract = input[units:u

我目前在解决此问题时遇到问题

我有一个网络,在这个网络中,我以各种形状为食

(batch_size,40,45,3) 
但我想对每一行进行1d卷积,然后将每个结果附加到一个列表中

这要求我能够以某种方式提取输入的行,但是如何访问模型定义中的输入数据

这就是目前的情况:

 def row_convolution(input):
    filter_size = 8

    for units in xrange(splits):
        extract = input[units:units+filter_size,:,:]
        for row_of_extract in extract:
            row_of_extract = np.expand_dims(row_of_extract,axis=0)
            temp_list.append((Conv1D(filters = 1, kernel_size = 1, activation='relu' , name = 'conv')(tf.pack(row_of_extract))))
            print len(temp_list)
        sum_temp_list.append(sum(temp_list))
    conv_feature_map.append(sum_temp_list)
    return np.array(conv_feature_map)

def output_of_row_convolution(input_shape):
    return (1, input_shape)

def fws():
    #Input shape: (batch_size,40,45,3)
    #output shape: (1,15,50)
    # number of unit in conv_feature_map = split
    filter_size = 8
    temp_list = []
    sun_temp_list = []
    conv_featur_map = []

    model = Sequential()

    #convolution
    model.add(Lambda(row_convolution,output_shape=output_of_row_convolution,input_shape = (40,45,3)))

    model.compile(loss="categorical_crossentropy", optimizer="SGD" , metrics = [metrics.categorical_accuracy])

    #Pooling


    hist_current = model.fit_generator(train_generator(batch_size),
                        steps_per_epoch=10,
                        epochs = 100000,
                        verbose = 1,
                        validation_data = test_generator(),
                        validation_steps=1,
                        pickle_safe = True,
                        workers = 4)

fws()

您可能可以进行
重塑
layer@Daniel您具体建议在哪里?我不确定我是否理解您打算选择行的“方式”,但就在
Input
之后--模型的一个重要方面是,不能在图层之外进行计算。如果您有自定义操作,它们应该放在
Lambda
层中。我使用for循环来执行此操作,因此无法将输出存储到列表中。我尝试使用Lambda层,但输出似乎相同。。错误消息。TypeError:“Tensor”对象不可编辑。