如何使用 tf.data.Dataset 将多个输入数据输入 model.fit()?

数据挖掘 深度学习 喀拉斯 张量流 图像分类
2022-02-20 15:58:47

模型 :

model = vgg16(weights = 'imagenet', include_top=False)
cl1 = Dense(2, activation = 'softmax',name='class_1')(x)
cl2 = Dense(2, activation = 'softmax',name='class_2')(x)
model = Model(inputs=model.input, outputs= [cl1,cl2])

loss = ['categorical_crossentropy','categorical_crossentropy']
model.compile(optimizer=opt, loss=loss  , metrics=['categorical_accuracy'])

数据输入管道:

  train_generator=train_datagen.flow_from_dataframe()

  def custom_generator(generator):
    for img_batch, lb_batch in generator:
        img_batch_list = tf.data.Dataset.from_tensor_slices(img_batch)
        for img,img_lb in zip(img_batch,lb_batch):
              ** some code block to change img_lb into tuple , value of the key in tuple is in 
               Tf.tensor shape(1,2)  **
              ** eg : updated_label_tuple ={class1:[1,0],class2: [0,1]}  **

        

        yield (updated_image_batch_tensor, updated_label_batch_list)

  train_ds = 
  val_ds= 

  model.fit(train_ds,
                    steps_per_epoch=200 ,
                    validation_data=val_ds,
                    validation_steps=40,
                    epochs=50,verbose=1)

错误 :

check_types=check_types) 文件“/home/samjith/anaconda3/envs/tf2/lib/python3.6/site-packages/tensorflow_core/python/data/util/nest.py”,第 299 行,在 assert_shallow_structure “输入有类型: %s。” % type(input_tree)) TypeError: 如果浅结构是一个序列,输入也必须是一个序列。输入的类型:<class 'list'>。

在这里,我必须将数据输入 2 个单独的密集层,这些层将执行 2 个不同的任务。我把它作为一个元组传递,就像这里提到的那样,但我得到了上述错误..

这是将数据输入两个密集(2)层的正确方法吗?这个bug怎么解决!!

0个回答
没有发现任何回复~