TensorFlow可以处理类似JSON的数据吗?

TensorFlow可以处理类似JSON的数据吗?,tensorflow,deep-learning,Tensorflow,Deep Learning,假设我们有一个JSON记录,如: { "Name" : "Tom", "Diseases" : [{ "Asthma" : [{ "Severity":5 "Medication" : [{ "Benzene" : [{

假设我们有一个JSON记录,如:

{
   "Name" : "Tom",
   "Diseases" : [{
          "Asthma" : [{
                        "Severity":5
                        "Medication" : [{
                                         "Benzene" : [{
                                                       "Start Date" : 10-5-2017,
                                                       "End Date" : 22-5-2018
                                                      }]
                                       }]
                     }]
                 }]
}

它有很多相互依赖的特性,有没有一种方法可以将其输入到TensorFlow深度神经网络中???

或多或少,但不能直接输入。有一个API来提供JSON数据,但这必须是一个API。但是,这些对象不能像您显示的那样保存层次结构数据,只能保存与整数、浮点或字节相对应的数据集合。在你的情况下,你可能是这样的:

{
  "features": {
    "feature": {
       "Name": { "bytes_list": { value: ["VG9t"] } },
       "Disease": { "bytes_list": { value: ["QXN0aG1h"] } },
       "Severity": { "int64_list": { value: [5] } },
       "Medication": { "bytes_list": { value: ["QmVuemVuZQ=="] } }
    }
  }
}
请注意,字符串必须以字节数组的形式给出,需要以协议缓冲区的JSON格式在Base64中进行编码。然而,这不允许有多种疾病的记录,因为正如我所说的,它不支持层次结构


例如,您可以为每个患者和每个疾病创建一个记录。如果您真的将JSON文档作为输入,您将使用它来获取对象的协议缓冲区二进制表示,然后实际获取张量。

更新2021:

现在似乎有实验支持,但还没有太多的文档

您可以在或中阅读更多内容

示例代码:

将tensorflow\u io导入为tfio
json_text=r'{“test”:[“this”,“is”,“some”,“data”],“bar”:42,“baz”:[[1,2],[2,3],[3,4],[4,5]}
规格={
“测试”:tf.TensorSpec(tf.TensorShape([4]),tf.string),
“条”:tf.TensorSpec(tf.TensorShape([]),tf.int32),
“baz”:tf.TensorSpec(tf.TensorShape([4,2]),tf.int32),
}
parsed=tfio.experimental.serialization.decode_json(json_文本,规范)
打印(已解析)
产出:

{
    'test': <tf.Tensor: shape=(4,), dtype=string, numpy=array([b'this', b'is', b'some', b'data'], dtype=object)>, 
    'bar': <tf.Tensor: shape=(), dtype=int32, numpy=42>, 
    'baz': <tf.Tensor: shape=(4, 2), dtype=int32, numpy=
    array([[1, 2],
           [2, 3],
           [3, 4],
           [4, 5]], dtype=int32)>
}
{
“测试”:,
“酒吧”:,
“巴兹”:
}

谢谢:)将包含多种疾病、多种药物等的非常复杂的JSON对象输入Tensorflow的最佳方式是什么?@RakshithYashvanth嗯,这在很大程度上取决于您打算如何处理数据。我的意思是,你可以有复杂的结构,例如,有多个由“键”值、数据库样式相关的张量,但如果你想进行机器学习,这几乎没有什么用处。一种可能是重复记录,每种疾病一次,但随后会丢失共病信息。另一个典型的选项是稀疏编码,每个疾病和药物都有一个“列”,1/0值表示是否存在(尽管我不确定如何编码疾病严重程度…).我在研究如何将整个病历作为一个深层神经网络的输入,以便共同发病率和其他数据间的关系preserved@RakshithYashvanth那么你可以像我说的那样使用稀疏编码。我在想,对于每种可能的疾病,你可以有一个数字(而不仅仅是1/0)值,0表示“没有”,其他任何表示严重性的值。对于药物,您可以只保留1/0,或者如果您有相关信息,还可以使用一个数字指示患者使用的药物(相对)量。在任何情况下,最好将值标准化为一个公共范围(例如[0,1]),这样每个因子都有相似的基本权重。@RakshithYashvanth啊,我忘了日期了。将这种时态信息与非时态数据一起编码是很复杂的,如果你有很多可能的药物(甚至可能每次药物都有多个周期?)。如果您愿意,您可以考虑如何将数据重塑为某种时间序列,然后使用循环模型之类的东西,这对时间依赖性更好。