关于Python和TensorFlow中一些易混淆的部分

Java给人的感觉就是格式要求非常规范严谨,到了Python,可能设计者想让它更容易实用,将其傻瓜化了,但我个人的感觉,这样做可能反而会使其比Java更加麻烦。

Java中不存在函数的概念,所谓的函数都写在类里成为方法。而Python里既有函数,又有方法。这样的话就容易搞混淆。

 

Python中类和Java中类的概念类似,两者定义方式有所不同,这里不再赘述,有兴趣者可以查看相关教程。通过类定义对象也有所不同。例如,Java中定义对象:

Employee staff=new Employee()

或者

Employee staff

staff=new Employee()

在Python中则是

staff=Employee()

看似简单了,但却会造成一些麻烦——它会跟函数相混淆。

我可以说Employee()是定义了一个新对象,然后把地址返回给了staff;我也可以理解为Employee()是函数,把值的地址赋给staff。

仅从这里似乎看不出它是类还是函数,这就比较麻烦了。

 

Python中TensorFlow、numpy是库/包,Session、Graph是类,get_default_graph()是函数,as_default()是方法。

经常看到tf.Graph()、graph.get_default_graph()等等,如不加以区分很容易混淆。

有的是库.类,如tf.Graph()、tf.Session();

有的是对象.方法,如graph.as_default()、sess.as_default()、sess.run();

有的是类.方法,如Graph.as_graph_def();

有的是库.函数,如tf.import_graph_def()、tf.get_default_graph()。

那么如

a=tf.add(2,5)

b=tf.multiply(a,3)

中add和multiply是函数还是类?

按照上面的模式,tf是库,那么add和multiply可以是类也可以是函数,似乎从形式上并不能看出它的类型。我可以理解为new了一个add、multiple对象,并把地址赋给a、b,我也可以理解为做了加法和乘法运算,并把值的地址赋给a、b。这里add和multiply是Op,请注意Op和Tensor都是类。

 

***.***它的含义很多,Java里面用的最多的大概就是System.out.println()语句了,你还知道它的含义吗?System是java.lang里面的一个类,而out就是System类里面的一个静态变量,而且这个变量是System类引用自java.io.PrintStream类,println()就是java.io.PrintStream类里的一个方法。

参见你了解System.out.println()的真正含义吗?

这里就是类.变量.方法

一般在Java中比较常见的是类.变量或者类.方法,这种类.变量.方法的情况除了该例还是很少见的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值