阅读(17.2k) 书签 (0)

TensorFlow检查NaN和Inf值的张量

2020-07-16 11:15 更新

tf.check_numerics

check_numerics ( 
    tensor, 
    message, 
    name = None
 )

请参阅指南:控制流程>调试操作

检查 NaN 和 Inf 值的张量.

当运行时,如果张量有任何不是数字(NaN) 或无穷大(Inf) 的值,就会报告一个 InvalidArgument 错误.否则,按原样通过张量.

ARGS:

  • tensor:一个张量.必须是下列类型之一:half,float32,float64.
  • message:一个字符串.是错误消息的前缀.
  • name:操作的名称(可选).

返回:

返回一个张量,与 tensor 具有相同的类型.


参数 'tensor' 要属于以下类型才能通过 bfloat16, float16, float32, float64,返回原tensorflow。否则报InvalidArgument 错误。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 27 11:16:32 2018

@author: myhaspl
"""

import tensorflow as tf
a = tf.constant([[1., 2.], [3., 4.]])
b = tf.constant([[1, 2], [3, 4]])

check_a=tf.check_numerics(a,"non number")
#check_b=tf.check_numerics(b,"non number")                                                            
sess=tf.Session()
with sess:
    print sess.run(check_a)
   # print sess.run(check_b)

[[1. 2.] [3. 4.]]