<つまづきメモ>loss関数がNaN値になる

評価関数(loss関数)がNaN値になる。

  • 原因

    • inputデータに,float32の最大値(232=2147483647)を超えるデータが存在した。 (売上高とかあるんだから当たり前ですよね…)
  • 対策

    • float64を使う
a = np.array([])
a.astype(float)
a = pd.read_csv(path).values
   2行目を差し込んだ。(a.astype(float))
   配列ににnanは存在しなくなりましたが…
       TypeError: Tensors in list passed to 'values' of 'ConcatV2' Op have types [float64, int32] that don't all match.
   調査不足かもしれないが、どうやらtensorflowはfloat32しか対応していないみたい。なので別対応が必要?

 * 常用対数を使う
        if "証券コード" in df_marge.columns:
            df_code = df_marge["証券コード"]
            df_marge = pd.np.log10(df_marge)
            df_marge = df_marge.replace([np.inf, -np.inf], np.nan).fillna(0)
            df_marge["証券コード"] = df_code
    これでうまくいきそうです。

    夢中になってたらこんな時間になってしまった。(am3:00)