如何在TensorFlow Keras中读取本地文本文件以替代get_file方法?
TensorFlow 本地文本文件读取方案
方案1:Python原生读取(最通用,适合小文件)
直接用Python内置的文件读写方法即可,不需要依赖TensorFlow接口,拿到的文本内容和教程中下载在线文件后读取的结果完全一致:
with open('prepWork.txt', 'r', encoding='utf-8') as file: text = file.read()
如果需要逐行读取,调整写法即可:
with open('prepWork.txt', 'r', encoding='utf-8') as file: lines = file.readlines()
方案2:TensorFlow 原生数据集接口(适合大文件/训练场景)
如果需要和TensorFlow的训练pipeline结合,或者处理GB级的大文本文件,用tf.data.TextLineDataset接口更适配后续的批处理、打乱等操作:
import tensorflow as tf # 读取单个本地文本文件,每行对应数据集中的一个元素 dataset = tf.data.TextLineDataset('prepWork.txt') # 也支持同时读取多个文本文件,传入路径列表即可 # dataset = tf.data.TextLineDataset(['prepWork1.txt', 'prepWork2.txt']) # 后续可直接对接训练流程,示例: dataset = dataset.shuffle(1000).batch(32)
可选方案:复用tf.keras.utils.get_file读取本地文件
如果不想调整原有教程的代码结构,也可以通过参数配置让get_file读取本地文件:
- 把你的
prepWork.txt放到Keras默认缓存目录下(默认路径为用户目录下的.keras/datasets/) - 调用时将origin参数设为None即可:
prepWork = tf.keras.utils.get_file('prepWork.txt', origin=None)
调用后返回的是本地文件的绝对路径,和你之前下载在线文件拿到的返回值格式完全一致。
内容的提问来源于stack exchange,提问作者Grant Fox
相关产品推荐
相关产品推荐

