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];