开发者社区> 问答> 正文

当标签是输入时(对于自动编码器),如何使用tf.data.Dataset.from_tensor_s

我试图使用这段代码来创建一个广泛和深入的自动编码器。(我有一个Dataframe,我试图把它转换成一个tf.fdata.dataset):

# A utility method to create a tf.data dataset from a Pandas Dataframe
def df_to_dataset(dataframe, shuffle=True, batch_size=256):
    dataframe = dataframe.copy()
    labels = dataframe.pop('target')
    ds = tf.data.Dataset.from_tensor_slices((dict(dataframe),labels))
    if shuffle:
        ds = ds.shuffle(buffer_size=len(dataframe))
    ds = ds.batch(batch_size)
    return ds
train_ds=df_to_dataset(train,shuffle=False)
val_ds=df_to_dataset(val,shuffle=False)


因为我想要一个自动编码器,我想要相同的输入和输出。我试着这样的:


def df_to_dataset(dataframe, shuffle=True, batch_size=256):
    dataframe = dataframe.copy()
    ds = tf.data.Dataset.from_tensor_slices((dict(dataframe),dict(dataframe)))
    if shuffle:
        ds = ds.shuffle(buffer_size=len(dataframe))
    ds = ds.batch(batch_size)
    return ds
train_ds=df_to_dataset(train,shuffle=False)
val_ds=df_to_dataset(val,shuffle=False)

# numeric_ cols
for header in NUMERICAL_COLUMNS:
    feature_columns.append(feature_column.numeric_column(header))    

feature_layer = tf.keras.layers.DenseFeatures(feature_columns)

feature_layer_inputs = {}
for header in cols:
    feature_layer_inputs[header] = tf.keras.Input(shape=(1,), name=header)


encoder_num=feature_layer(feature_layer_inputs)
encoder_num=tf.keras.layers.Dense(10,activation='relu',name='encoder1')(encoder_num)
encoder_num=tf.keras.layers.Dense(6,activation='sigmoid',name='encoder2')(encoder_num)
encodernum = tf.keras.Model(inputs=[v for v in feature_layer_inputs.values()], outputs=encoder_num)

encodernum.compile(optimizer="adam",
              loss='mean_squared_error',
              metrics=['accuracy'])

history = encodernum .fit(train_ds,
          validation_data=val_ds,
          epochs=3)

但我得到这个错误:

ValueError: No data provided for "outputlayer_num". Need data for each key in: ['outputlayer_num']

在tensorflow文档中,他们只对target使用了一列,我没有发现任何使用panda dataframe创建的数据集的自动编码器。 有人知道如何使一个自动编码器使用熊猫数据aframe作为输入和DenseFeature层来选择两个不同类型的列吗? 问题来源StackOverflow 地址:/questions/59378986/how-to-use-tf-data-dataset-from-tensor-slices-when-the-label-is-the-input-for-a

展开
收起
kun坤 2019-12-30 09:55:51 667 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载