Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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 Tenserflow自定义图层输入不';行不通_Python_Python 3.x_Tensorflow_Keras_Neural Network - Fatal编程技术网

Python Tenserflow自定义图层输入不';行不通

Python Tenserflow自定义图层输入不';行不通,python,python-3.x,tensorflow,keras,neural-network,Python,Python 3.x,Tensorflow,Keras,Neural Network,我需要为我的模型创建自定义图层。代码如下: class Custom_layer_2(keras.layers.Layer): def __init__(self, input_neurons_nmber, nn_neurons_number, connections_matrix, inputs_neurons): super(Custom_layer_2, self).__init__() self.cn = tf.dtypes.cast(tf.con

我需要为我的模型创建自定义图层。代码如下:

class Custom_layer_2(keras.layers.Layer):
    def __init__(self, input_neurons_nmber, nn_neurons_number, connections_matrix, inputs_neurons):
        super(Custom_layer_2, self).__init__()
        self.cn = tf.dtypes.cast(tf.constant(connections_matrix),tf.float32)
        self.inputs_neurons = tf.dtypes.cast(tf.constant(inputs_neurons), tf.float32)
        self.nn_neurons_len = nn_neurons_number
        self.inpt_neurons_len = input_neurons_nmber
        self.w = self.add_weight(shape=([self.inpt_neurons_len+self.nn_neurons_len]), initializer="random_normal", trainable=True)
        self.b = self.add_weight(shape=([self.nn_neurons_len]), initializer="zeros", trainable=True)

    def call(self, inputs_nn_neurons):
        self.input_matrix = tf.repeat([tf.concat([self.inputs_neurons, inputs_nn_neurons], 0)], repeats=self.nn_neurons_len, axis=0)
        return tf.concat([self.inputs_neurons, inputs_nn_neurons], 0)
当我使用某种形状的预定义张量作为输入时,它工作得非常好:

nn_layer = Custom_layer_2(inputs_number, nn_number, conections_matrix, first_input_neurons)
input_tensor = [SOME TENSOR]
layer_1 = nn_layer(input_tensor)
不幸的是,为了创建一个模型并对其进行训练,我需要指定一个输入,所以当我使用输入层而不是确切的张量时,由于某种原因,代码不起作用:

nn_layer = Custom_layer_2(inputs_number, nn_number, conections_matrix, first_input_neurons)
inputs_layer = tf.keras.Input(shape=(SOME SHAPE,))
layer_1 = nn_layer(inputs_layer)

此代码抛出值错误:形状必须为秩1,但为秩2。据我所知,当我使用tf.keras.Input时,它会创建一个形状张量(九,一些形状),而如果我使用精确张量,它的形状是指定的。在这种情况下,如果a想创建一个带有自定义层的模式,我该怎么办?

传递给
tf.keras.Input
的形状可能不包括批量大小(第一维度)@danil kutny我已经试着调试过了,但我无法理解此代码需要什么数据。请在脚本中为变量添加一些值,例如
输入\u编号
某些形状
第一个\u输入神经元
,等等。例如
np.zero(5,2)
或任何预期形状。这将真正有助于再现您的错误,并使您的客户层清楚地了解您的客户层在做什么;形状:724;第一输入神经元:[0,1,…,722723];