在使用TFrecords在TPU中使用图像分割的训练损失是Nan

时间:2020-06-15 16:40:28

标签: deep-learning image-segmentation tensorflow-datasets tpu

我是一个初学者,尝试在Kaggle Kernels中使用Tensorflow与TPU一起使用。我以前使用GPU中的数据集训练了Unet模型,现在我试图在TPU中实现它。我用数据集的图像和遮罩制作了tfrecord,而TFrecord返回了图像和遮罩。当我尝试使用TPU进行训练时,即使度量标准的准确性是正常的,但损失始终是Nan。由于这与我在GPU中使用的模型和损耗相同,因此我猜测问题出在tfrecord或加载数据集。 加载数据的代码如下:

Public Sub ExchangeRate()
    Dim results(), matches As Object, s As String
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "https://eservices.mas.gov.sg/api/action/datastore/search.json?resource_id=5aa64bc2-d234-43f3-892e-2f587a220f74&fields=end_of_week,usd_sgd,jpy_sgd_100&limit=1&sort=end_of_week%20desc", False
        .send
        s = .responseText
    End With
    With CreateObject("VBScript.RegExp")
        .Global = True
        .IgnoreCase = False

        If .Pattern = "usd_sgd"":""(.*?)""" Then
           .MultiLine = True
           Set matches = .Execute(s)
           ReDim results(1 To matches.Count)

         ElseIf .Pattern = "jpy_sgd_100"":""(.*?)""" Then
            .MultiLine = True
            Set matches = .Execute(s)
            ReDim results(1 To matches.Count)
         End If

   End With
   Dim match As Variant, r As Long
   For Each match In matches
       r = r + 1
       results(r) = match.submatches(0)
   Next
   With ThisWorkbook.Worksheets("Sheet1")
       .Cells(2, 2).Resize(UBound(results), 1) = Application.Transpose(results)
       .Cells(2, 3).Resize(UBound(results), 1) = Application.Transpose(results)
   End With
End Sub

那么,我在做什么错?

1 个答案:

答案 0 :(得分:0)

原来的问题是我正在整理数据并将其分批处理到20,以正确地查看matplotlib中的图像和蒙版,这搞砸了如何将数据发送到模型,从而造成了Nan损失。在发送原始数据集进行训练的同时,制作数据集的另一个副本并使用该副本查看图像可以解决此问题。