tensorflow: 为什么 tensor型参数 可以接受 非tensor型输入

问题

在日常用 tensorflow 进行编程的时候,我经常会纳罕一个问题:

明明 manual里面 白纸黑字地注明了 某个参数项 的 输入 必须是 tensor型,可是 非tensor型 的数据 输入后 却不会报错,依然能正常算出结果。


示例

比如,合法的输入应该如下:

import tensorflow as tf

a = tf.constant(10)
b = tf.constant(20)
c = tf.multiply(a, b)
sess = tf.InteractiveSession()
print c.eval()

打印结果:

200


但是如果你这么玩:

import tensorflow as tf

a = 10
b = 20
c = tf.multiply(a, b)
sess = tf.InteractiveSession()
print c.eval()

照样打印出一样的结果来:

200


但是 manual 里面已经写明了 tf.multiply函数参数项输入 必须要是 tensor型 的:

这里写图片描述

具体见 Args 一栏:
这里写图片描述


原因

仔细查看 tensorflow 官网 的 api manual,页首经常会有这个 提示

这里写图片描述

通过查看源码,我发现凡是注明了

Note: Functions taking Tensor arguments can also take anything accepted by tf.convert_to_tensor.

这句话的,此类接口在源码中,都有对 input 先进行 tf.convert_to_tensor预处理 。所以当 非tensor型 数据 输入时,当然就 不会报错 啦~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值