学习机器学习中遇到的一些问题

本文用来记录学习机器学习时遇到的tensorflow框架的相关问题及python基础语法的相关问题
1.tensor.eval()函数和session.run函数区别
假设你有个tensor t,t.eval()等价于tf.get_default_session(t),其中最主要的区别时session.run()可以再同一步获取多个tensor值

t = tf.constant(42.0)

u = tf.constant(37.0)

tu = tf.mul(t, u)

ut = tf.mul(u, t)

with sess.as_default():

   tu.eval()  # runs one step

   ut.eval()  # runs one step

   sess.run([tu, ut])  # evaluates both tensors in a single step

2.tensor.argmax()函数解释
函数原型

tf.argmax(
    input,
    axis=None,
    name=None,
    dimension=None,
    output_type=tf.int64
)

获得输入在制定轴的最大值的位置
例:

import tensorflow as tf
tf.reset_default_graph()
a=tf.get_variable(name='a',shape=[3,4],dtype=tf.float32,initializer=tf.random_uniform_initializer(minval=-1,maxval=1))
b=tf.argmax(a)
c=tf.argmax(input=a,dimension=0)
d=tf.argmax(input=a,dimension=1)
sess=tf.InteractiveSession()
sess.run(tf.initialize_all_variables())
print(sess.run(a))
print(sess.run(b))
print(sess.run(c))
print(sess.run(d))

输出
[[-0.77440333 -0.38460183 -0.36490536 -0.16382861]
[-0.4298625 -0.38621664 0.9929168 -0.02698684]
[ 0.54207134 0.48158026 -0.51101947 -0.55545044]]
[2 2 1 1]
[2 2 1 1]
[3 2 0]
不难看出,dimension默认为列,0代表以列为轴,1代表以行为轴。

3.遇到了一个bug
Variable a already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:
解决方法:
在代码出现tensor变量的最前面加一句

tf.reset_default_graph()
numpy.eye(N,M=None,k=0,dtype=<class 'float'>,order='C)

这个函数是生成对角矩阵
参数介绍:
1)N:int型,表示的是输出的行数
2)M:int型,可选项,输出的列数,如果没有就默认为N
3)k:int型,可选项,对角线的下标,默认为0表示的是主对角线,负数表示的是低对角,正数表示的是高对角。
4)dtype:数据的类型,可选项,返回的数据的数据类型
5)order:{‘C’,‘F’},可选项,也就是输出的数组的形式是按照C语言的行优先’C’,还是按照Fortran形式的列优先‘F’存储在内存中
在深度学习中,此函数可以将数组转换为one-hot形式.
例:

labels=np.array([[1],[0],[2],[1]])
res=np.eye(3)[labels.reshape(-1)]    #3代表种类数,它可以把数组每个元素转为向量
print(res)

输出结果:
[[0. 1. 0.]

[1. 0. 0.]

[0. 0. 1.]

[0. 1. 0.]]

5.tf.cast()函数
此函数可以把tensor改变类型,函数原型为

tf.cast(
    x,
    dtype,
    name=None
)

参数解释:
x:必选,你要改变类型的tensor变量
dtype:必选,目标类型
name:可选,此操作的名字
例:

import tensorflow as tf
sess=tf.Session()
x = tf.constant([1.8, 2.2], dtype=tf.float32)
z=tf.cast(x,tf.int32)
print(sess.run(z))

输出:[1 2]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值