Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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 ValueError:请使用'layer'实例初始化'TimeDistributed'层_Python_Tensorflow_Machine Learning_Keras_Deep Learning - Fatal编程技术网

Python ValueError:请使用'layer'实例初始化'TimeDistributed'层

Python ValueError:请使用'layer'实例初始化'TimeDistributed'层,python,tensorflow,machine-learning,keras,deep-learning,Python,Tensorflow,Machine Learning,Keras,Deep Learning,我试图建立一个模型,可以训练音频和视频样本,但我得到这个错误 ValueError:请使用'layer'实例初始化'TimeDistributed'层。您通过了:Tensor(“input_13:0”,shape=(None,5648384,3),dtype=float32) 以下是我的三个模型函数: def build_convnet(shape=(648, 384, 3)): momentum = .9 model = tf.keras.models.Sequential(

我试图建立一个模型,可以训练音频和视频样本,但我得到这个错误
ValueError:请使用'layer'实例初始化'TimeDistributed'层。您通过了:Tensor(“input_13:0”,shape=(None,5648384,3),dtype=float32)

以下是我的三个模型函数:

def build_convnet(shape=(648, 384, 3)):
    momentum = .9 
    model = tf.keras.models.Sequential()
    model.add(tf.keras.layers.Conv2D(64, (2,2), input_shape=shape,padding='same', activation='relu'))
    model.add(tf.keras.layers.Conv2D(64, (2,2), padding='same', activation='relu'))
    model.add(tf.keras.layers.BatchNormalization(momentum=momentum))
    model.add(tf.keras.layers.MaxPool2D())
    model.add(tf.keras.layers.Conv2D(128, (3,3), padding='same', activation='relu'))
    model.add(tf.keras.layers.Conv2D(128, (3,3), padding='same', activation='relu'))
    model.add(tf.keras.layers.BatchNormalization(momentum=momentum))
    model.add(tf.keras.layers.MaxPool2D())
    model.add(tf.keras.layers.Conv2D(256, (3,3), padding='same', activation='relu'))
    model.add(tf.keras.layers.Conv2D(256, (3,3), padding='same', activation='relu'))
    model.add(tf.keras.layers.BatchNormalization(momentum=momentum))
    model.add(tf.keras.layers.GlobalMaxPool2D())

    print(model.summary())
    return model

我试图搜索,但我只能找到一个答案,但我并不真正理解它,所以如果有人能在这里帮助我,那将是巨大的帮助。提前谢谢

问题在下面的部分。将此部分从功能更改为: 只需尝试使用功能模型而不是顺序模型将build_convnet上的部分嵌入到动作模型中

 TD = tf.keras.layers.TimeDistributed(convnet)(input_shape)

我尝试将这两个函数组合起来,但仍然会产生相同的值错误。我已经在这里上传了组合函数TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“layer”这就是遵循本指南的内容。抱歉,您只是混淆了OP,TimeDistributed将层作为第一个参数,因此正确的调用是TimeDistributed(convnet)(input_shape)。这一行应该做什么?TD=tf.keras.layers.TimeDistributed(输入_形)(convnet)@MatiasValdenegro这是一个时间分布层。因为这里的输入是5维的,视频是按时间序列分析的,所以我添加了这一层。它应该以一个conv网络作为输入(3维),那么参数的顺序就错了,它应该是TD=tf.keras.layers.TimeDistributed(convnet)(input_shape)@MatiasValdenegro Yes。我知道了,但它仍然显示相同的错误它不可能是完全相同的错误,请添加新错误的完整回溯
def audio_and_final_model():
  input_shape = tf.keras.layers.Input(shape=(220941,1))
  Conv1 = tf.keras.layers.Conv1D(16,activation='relu',kernel_size=(10))(input_shape)
  MaxPool1 = tf.keras.layers.MaxPool1D()(Conv1)
  Dropout1 = tf.keras.layers.Dropout(0.2)(MaxPool1)
  Conv2 = tf.keras.layers.Conv1D(32,activation='relu',kernel_size=(10))(Dropout1)
  MaxPool2 = tf.keras.layers.MaxPool1D()(Conv2)
  Dropout2 = tf.keras.layers.Dropout(0.2)(MaxPool2)
  Conv3 = tf.keras.layers.Conv1D(16,activation='relu',kernel_size=(10))(Dropout2)
  MaxPool3 = tf.keras.layers.MaxPool1D()(Conv3)
  Dropout3 = tf.keras.layers.Dropout(0.2)(MaxPool3)
  Flatten = tf.keras.layers.Flatten()(Dropout3)
  Dense1 = tf.keras.layers.Dense(128,activation='relu')(Flatten)
  Dense2 = tf.keras.layers.Dense(64,activation='relu')(Dense1)


  model = tf.keras.models.Model(inputs=input_shape,outputs=Dense2)

  return model
INSHAPEAM = (5, 648, 384, 3)
INSHAPEAFM = (220941,1)
am = action_model()
afm = audio_and_final_model()

combined = tf.keras.layers.Concatenate([am.output,afm.output])
z = tf.keras.layers.Dense(2,activation='softmax')(combined)

model = tf.keras.models.Model(inputs=[INSHAPEAM,INSHAPEAFM],outputs=z)
 TD = tf.keras.layers.TimeDistributed(convnet)(input_shape)