python - 在 Tensorflow 2.0 中从路径部分创建标签,而路径不是标签名称
问题描述
我目前正在 Tensorflow 中处理医疗数据。我遇到的问题是关于将标签附加到数据。我的目录结构如下:有一个大文件夹,其中包含每个患者的 3 个子文件夹(有 24 个患者,所以 72 个文件夹)是数据。
现在的问题是将患者分为两组,第 1 组和第 0 组(对治疗有反应,或无反应)。我的目标是训练模型以确定患者应该属于哪个组。我正在关注本教程,了解如何从所有这些文件创建数据集。但在示例中,标签是路径的一部分。这是不可能的(大学不想改变目录的结构)
这是我的示例代码“函数”是我的所有函数的 python 脚本,设置是一个应该创建全局变量的 python 脚本:
设置.json:
是我所有设置的 json 文件。是的,我有两个名为设置的文件,我将在某个时候重命名它们。“标签”是每个子文件夹的标签列表。(前三个是患者 1,第二个是患者 2 的三个,依此类推)
“标签”:[1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0 .....(这里太长了) “datasetpath”只是我的数据的路径。设置.py:
import functions
def init():
global settings
settings = functions.initjson()
global a
a = 1
functions.py: 导入设置导入 tensorflow as tf
def process_path(file_path):
parts = tf.strings.split(file_path, '/')
#label = settings.settings["labels"][settings.a]
label = settings.a #To test if it ticks up at all
settings.a = settings.a +1
return tf.io.read_file(file_path), label
如你看到的
实际脚本:
datasetpath = settings.settings["datasetpath"]
file_paths = functions.getfilepaths(datasetpath,verbose=True)
setpath = pathlib.Path(datasetpath)
list_ds = tf.data.Dataset.list_files(str(setpath/'*/*'))
labeled_ds = list_ds.map(functions.process_path)
for f in list_ds.take(5):
print(f.numpy())
for image_raw, label_text in labeled_ds.take(3):
print(repr(image_raw.numpy()[:100]))
print()
print(label_text.numpy())
所以我不能只把路径的一部分作为他们如何做的标签。我无法将路径中的患者姓名与普通列表进行比较(请参阅此处)我尝试使用一个全局变量来标记并访问列表,但它没有标记。而且我的想法很新鲜。有没有人知道如何解决这个问题?
解决方案
所以我现在自己解决了。这并不理想,但我所做的是遍历所有路径并将它们与“标签”列表进行比较。这是我使用的功能。
def PD_PET_list():
datasetpath = settings["Path to PET"]
labels = settings["labels"]
#if settings.verbose: print("Path to Dataset for label Creation:",datasetpath)
setpath = pathlib.Path(datasetpath)
#if settings.debug: print(setpath)
pat = sorted(glob.glob(str(setpath / '*')))
global pd
pd = []
for i in range(len(labels)):
# print(pat[i])
# print(labels[i])
if labels[i] == 1:
#print(pat[i])
#print(labels[i])
parts = tf.strings.split(pat[i], '/')
pd.append(parts[-1])
之后我只是检查了文件夹的名称是否在该列表中(循环遍历列表“如果 x in y”并没有令人遗憾地工作。
推荐阅读
- python - 从行中删除特定模式
- sql - 如何在mysql中验证日期为空?
- opengl - 在 cygwin 中编译 OpenGL 程序失败
- aws-fargate - 如何将 Linux 功能 SYS_NICE 和 DAC_READ_SEARCH 添加到 AWS Fargate 中的容器?
- javascript - 通过经验找到最接近的水平
- database - 检测导致数据库阻塞会话的特定脚本
- sql - 尝试添加空格时使用 concat 时出错?
- java - Spring JPA 在分页存储库中按外键选择
- discord - 睡眠功能在 discord.py 中的行为不像应有的那样
- r - 如何通过更改数据的配置来删除数据帧的 NA?