TensorFlow中的显式和隐式类型定义

时间:2019-05-08 18:51:39

标签: python tensorflow types

我才刚刚开始学习TensorFlow。引用documentation

  

让我们建立一个简单的计算图。最基本的操作是一个常数。构建操作的Python函数将张量值作为输入。结果操作不需输入。运行时,它输出传递给构造函数的值。我们可以如下创建两个浮点常量a和b:

{
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/var/log/rails.log",
            "log_group_name": "rails.log",
            "log_stream_name": "{instance_id}"
          },
          {
            "file_path": "/var/log/nginx_info.log",
            "log_group_name": "nginx_info.log",
            "log_stream_name": "{instance_id}"
          }
        ]
      }
    }
  },
  "metrics": {
    "append_dimensions": {
      "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
      "ImageId": "${aws:ImageId}",
      "InstanceId": "${aws:InstanceId}",
      "InstanceType": "${aws:InstanceType}"
    },
    "metrics_collected": {
      "collectd": {
        "metrics_aggregation_interval": 60
      },
      "mem": {
        "measurement": [
          "mem_used_percent"
        ],
        "metrics_collection_interval": 60
      },
      "statsd": {
        "metrics_aggregation_interval": 60,
        "metrics_collection_interval": 10,
        "service_address": ":8125"
      },
      "swap": {
        "measurement": [
          "swap_used_percent"
        ],
        "metrics_collection_interval": 60
      }
    }
  }
}

第二个常量隐式键入为float32。那是基于第一个常量的显式输入吗?这是否意味着需要第一个a = tf.constant(3.0, dtype=tf.float32) b = tf.constant(4.0) # also tf.float32 implicitly total = a + b print(a) print(b) print(total) tf.constant documentation暗示它不会:

  

如果未指定参数dtype,则从dtype的类型中推断出该类型。

但是然后不必显式地键入上面的3.0常量。

我只是想对此进行澄清,因为就像我说的那样,我才刚刚开始。

1 个答案:

答案 0 :(得分:0)

  

但随后不必显式键入3.0常量   以上。

完全正确。

a = tf.constant(3.0, dtype=tf.float32)

等效于:

a = tf.constant(3.0)

文档只是演示了不同的重载。如果我们想要不同的数值精度(甚至只是为了提高人类的可读性),我们可能会选择显式提供类型,但是如果您想使用默认数据类型TF推断,那么就完全没有必要了。