我试图使用这段代码来创建一个广泛和深入的自动编码器。(我有一个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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。