Tensorflow 入门

变量都是tensor。
先引入库

import tensorflow as tf
import numpy as np 
import math
import matplotlib.pyplot as plt

np.random.seed(1)
os.environ["CUDA_VISIBLE_DEVICES"]="2"

使用tensorflow一般都是如下步骤:

  • 声明张量(tensors)
  • 写对张量的操作
  • 初始化张量
  • create会话(session)
  • 跑会话,会话会执行之前写的对张量的操作
    例子:
y_hat = tf.constant(36, name='y_hat')            # 声明张量(常量)
y = tf.constant(39, name='y')                    # 声明张量
W1=tf.get_variable("W1", [25,64*64*3], initializer=tf.contrib.layers.xavier_initializer(seed=1)) #该函数返回一个用于初始化权重的初始化程序 “Xavier” 。这个初始化器是用来保持每一层的梯度大小都差不多相同。
b1=tf.get_variable("b1", [25,1], initializer=tf.zeros_initializer()) #初始化为0
loss = tf.Variable((y - y_hat)**2, name='loss')  # 声明张量(变量),也是对y, y_hat进行的操作,求loss
init = tf.global_variables_initializer()         # 初始化张量
                                                 
with tf.Session() as session:                    #create会话
    session.run(init)                            #  跑会话
    print(session.run(loss))                     

如果没有初始化则不会计算。如下面例子:

a=tf.constant(2)
b=tf.constant(10)
c=tf.multiply(a,b)
print(c)  #Tensor("Mul:0", shape=(), dtype=int32)

看到c=0.所以要run才行(这里因为没有变量,所以不需要初始化。在上一个例子中因为有loss这个tf.variable,所以需要init = tf.global_variables_initializer()session.run(init)

palceholder:可以稍后再设定值。通过feed_dict这个参数来这顶。如下:

x = tf.placeholder(tf.int64, name = 'x')
print(sess.run(2 * x, feed_dict = {x: 3}))
sess.close()

或者x是矩阵:

 X=tf.placeholder(tf.float32, shape=(None, n_H0, n_W0, n_C0))

线性函数操作
tf.matmul(…, …) 矩阵乘法,不同于numpy的乘法,这个乘法需要两个矩阵 的形状对的上,比如nm X ms=n*s, 即tf.matmul(X, Y), 其中X.shape=(n,m), Y.shape(m,s)
tf.add(…, …) 矩阵加法, 两个矩阵形状要相同

运行会话的两种方式:
方法1:

with tf.Session() as sess:
	result = sess.run(..., feed_dict={x:z})

方法2:

sess=tf.Session()
result=sess.run(..., feed_dict={x:z})
sess.close()

计算entropy-cost: cost=tf.nn.sigmoid_cross_entropy_with_logits_v2(logits=…, labels=…)

one-hot编码 :
one_hot 编码是指, 如结果Y有C个种类的结果(0- C-1)。比如手势识别总共有10种手势,则Y的值可能是0-9. one hot 编码将一维向量Y编码成二维向量
Y有4种结果

#如果样本j 有 标签i, 则(i, j)为1
tf.one_hot(labels, depth, axis)  #labels是结果向量
												#depth是结果的种类即one-hot后矩阵的row
												#axis=0为上图的样子。axis=1为上图的转置, 一般为0
										

初始化为全0或者全1

zeros=tf.zeros(shape) # shape=[3]
ones=tf.ones(shape) #shape=[3,7]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值