Improving Deep Neural Networks (Week3)编程——Tensorflow

主要步骤:

  • Initialize variables
  • Start your own session
  • Train algorithms
  • Implement a Neural Network

一、初始化变量

1.定义变量的语法是:tf.Variable(变量或变量表达式,name=''(设置变量名))

2.进行计算时,一定要注意启动session

a=tf.constant(3)

b=tf.constant(10)

c=tf.multiply(a,b)

session=tf.Session()

print(session.run(c))

3.feed dictionary,用feed_dict来储存placeholder的值

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

定义X不需要刚开始就确定其值,当启动Session时feed data即可,实现了对placefolder的赋值

4、Linear function

Y=wX+b

x=tf.Varable(np.random.randn(3,1),name="X")问:到底在name处的引号是单引号还是双引号

def linear_function():
X = tf.Variable(np.random.randn(3,1),name="X")
    W = tf.Variable(np.random.randn(4,3),name="W")
    b = tf.Variable(np.random.randn(4,1),name="b")
    Y = tf.add(tf.matmul(W,X),b)
    init = tf.global_variables_initializer() 
    sess = tf.Session()
    sess.run(init)
    result =sess.run(Y)
    sess.close()

    return result

注:需要先初始化变量才能用run(init)再给各变量赋值,然后在run需要运行的结果

5.计算sigmoid函数

def sigmoid(z):
 x = tf.placeholder(tf.float32,name="x")  #创建placeholders

 sigmoid = tf.sigmoid(x) #聚化计算图对应的操作

 sess=tf.Session()#创建session
 result = sess.rrun(sigmoid,feed_dict={x:z})#运行session

return result

在这里并不需要初始化参数,可能是没有变量 ,

其次,这里的feed_dict的值是需要从输入里传入的

6.计算代价函数

def cost(logits, labels):
z = tf.placeholder(tf.float32) 

y = tf.placeholder(tf.float32)
 cost = tf.nn.sigmoid_cross_entropy_with_logits(logits = z,labels = y)
sess = tf.Session()
 cost = sess.run(cost,feed_dict={z:logits,y:labels})
 sess.close()
 return cost

7.使用热点编码

def one_hot_matrix(labels, C):
   C = tf.constant(value=C,name='C')
 one_hot_matrix = tf.one_hot(labels,C,axis=0)#注意在这,因为是对每列进行编码,即每个实例,所以设定axis=0) 

sess = tf.Session()
 one_hot = sess.run(one_hot_matrix)
  sess.close()

想通一个问题:当name只有一个字母时,用单引号,如果是一个词语就用双引号

但!又有一个问题:为啥在这里有常量,却不进行初始化?喔!难道 init = tf.global_variables_initializer() 这个只是初始化变量

常量不必初始化吧!!

8.初始化零矩阵和单位矩阵

def ones(shape):
ones = tf.ones(shape)
  sess = tf.Session()
 ones = sess.run(ones)
 sess.close()
return ones

这里的传值和普通的传值一样,只有placeholder存在时才使用feed_dict

二、建立神经网络

步骤:创建计算图→运行计算图

1.创建placeholders

def create_placeholders(n_x, n_y):
  X = tf.placeholder(tf.float32,shape=[n_x,None])
  Y = tf.placeholder(tf.float32,shape=[n_y,None])

  return X, Y

2.初始化参数

xavier_initializer( uniform=True, seed=None, dtype=tf.float32 )

该函数返回一个用于初始化权重的初始化程序 “Xavier” 。

这个初始化器是用来保持每一层的梯度大小都差不多相同。

参数:

uniform: 使用uniform或者normal分布来随机初始化。 
seed: 可以认为是用来生成随机数的seed 
dtype: 只支持浮点数。

猜你喜欢

转载自blog.csdn.net/weixin_38527856/article/details/86748980