python - 如何将 PrefetchDataset 转换为 TF 张量?

标签 python tensorflow keras tensorflow2.0

def get_train_dataset(file_path, **kwargs):
  dataset = tf.data.experimental.make_csv_dataset(
      file_path,
      batch_size=5, 
      label_name=LABEL_COLUMN,
      na_value="?",
      num_epochs=1,
      ignore_errors=True,
      **kwargs)
  return dataset

raw_train_data = get_train_dataset(train_file_path, select_columns=CSV_COLUMNS)

我从'make_csv_dataset'函数创建了一个DataSet,它是OrderDict的一个PrefectDataset。但是,当我拟合模型时:
embedding = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(embedding, input_shape=[],
                           dtype=tf.string, trainable=True)
model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])
history = model.fit(train_data.shuffle(10000),
                    epochs=20,
                    validation_data=val_data,
                    verbose=1)

它报告错误:
  File "/home/my-env/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2_utils.py", line 118, in <listcomp>
    inputs = [inputs[key] for key in model._feed_input_names]
KeyError: 'keras_layer_input'

我希望将此 OrderedDictionary 转换为 TF.Tensor,然后 'fit' 方法应该可以工作。怎么做?或者有其他方法可以解决这个问题吗?

在另一个帖子中,我看到了:
The not very elegant workaround you can try is to match the name of input layer with csv column name

我的 csv 文本列名称是“文本”。如果我想使用上述解决方法,该怎么做?

最佳答案

我认为问题出在其他地方,但首先更改 fit 中数据集的名称。您没有在任何地方定义 train_data 变量。

如果这仍然不起作用,那么用这一行替换您的 get_train_data ,同时将值提供给其中的相应参数。

dataset = tf.data.experimental.make_csv_dataset('PATH OR FILE NAME', batch_size = 1,select_columns = ['Column1','Label'], label_name = 'Label', num_epochs = 1 ,shuffle = True)

关于python - 如何将 PrefetchDataset 转换为 TF 张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59509494/

相关文章:

python - 如何使用python检查HDFS中是否存在文件

python - 如何配置将 json 对象发送到 Django Channels?

tensorflow - 如何恢复只有一个扩展名为 ".model"的文件的 tensorflow 模型

python - 将 Keras 增强数据保存为 numpy 数组

python - 检查模型输入 : expected convolution2d_input_1 to have shape (None, 3、32、32) 时出错,但得到形状为 (50000、32、32、3) 的数组

python - 当 python 出现内存错误时,如何读取文件中的有限行

python - 仅当值不是特定值时按值过滤数据帧

python - TensorFlow 2.0 凯拉斯 : How to write image summaries for TensorBoard

machine-learning - Keras 中的无监督损失函数

deep-learning - 如何将输入按摩到 Keras 框架中?