#菜鸟深度学习的逆袭之路#day7

jupyter在导入文件的时候,直接使用import cnn_utils是无法使用里面参数的,比如:

import matploblit.pyplot as plt
import cnn_utils
plt.imshow(X_train_orig[index])

这里会报错,显示X_train_orig未定义,是因为这是cnn_utils里定义的参数,不可以直接在这里使用,解决方法:

from cnn_utils import load_dataset
X_train_orig,Y_train_orig,X_test_orig,Y_test_orig,classes = load_dataset()

即可解决问题。

2.tensorflow 创建占位符时,如果不知道某一维度的数量,可以使用None代替具体值。
3.tf.get_variable(name, shape, initializer): name就是变量的名称,shape是变量的维度,initializer是变量初始化的方式
当 initializer=tf.contrib.layers.xavier_initializer
该函数返回一个用于初始化权重的初始化程序,这个初始化器是用来保持每一层的梯度大小都差不多相同。
4.关于tf.get_variable 与 tf.variable区别,有两个网站写的还阔以,可以参考一下:
https://www.cnblogs.com/wf-ml/p/9721027.html
https://blog.csdn.net/MrR1ght/article/details/81228087?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
5.tensorflow 有一些可以直接拿来用的函数:

tf.nn.conv2d(X,W1,strides=[1,s,s,1],padding='SAME')

给定输入X XX和一组过滤器W1 W1W1,这个函数将会自动使用W1 W1W1来对X XX进行卷积,第三个输入参数是**[1,s,s,1]**是指对于输入 (m, n_H_prev, n_W_prev, n_C_prev)而言,每次滑动的步伐。

tf.nn.max_pool(A, ksize = [1,f,f,1], strides = [1,s,s,1], padding = 'SAME')

给定输入X XX,该函数将会使用大小为(f,f)以及步伐为(s,s)的窗口对其进行滑动取最大值

tf.nn.relu(Z1) #计算Z1的ReLU激活

tf.contrib.layers.flatten(P)  #给定一个输入P,此函数将会把每个样本转化成一维的向量,然后返回一个tensor变量,其维度为(batch_size,k)

tf.contrib.layers.fully_connected(F, num_outputs)  #给定一个已经一维化了的输入F,此函数将会返回一个由全连接层计算过后的输出。

#使用tf.contrib.layers.fully_connected(F, num_outputs)的时候,全连接层会自动初始化权值且在你训练模型的时候它也会一直参与,所以当我们初始化参数的时候我们不需要专门去初始化它的权值。
tf.nn.softmax_cross_entropy_with_logits(logits = Z3 , lables = Y) #计算softmax的损失函数。这个函数既计算softmax的激活,也计算其损失

tf.reduce_mean #计算的是平均值,使用它来计算所有样本的损失来得到总成本。

6.关于axis=0和1的问题,遇到有个解释比较有意思:axis=0确实是行的意思,我也是纠结了很久,直到碰到一个极好的解释:axis=0表示的是“按行”,其实就是对每一列的操作,同理,axis=1按列操作,也即对每一行。我觉得可以类比图像的像素矩阵h*w,第一个坐标轴h的方向是向下的,第二个坐标轴w的方向是向右的。
7.tf.argmax:
tf.argmax(vector, 1):返回的是vector中的最大值的索引号,如果vector是一个向量,那就返回一个值,如果是一个矩阵,那就返回一个向量,这个向量的每一个维度都是相对应矩阵行的最大值元素的索引号。

8.equal,相等的意思。顾名思义,该函数用来判断相等
tf.equal(A, B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的
由于是逐元素的对比,所以x和y的维度也要相同

9.tf.cast():函数主要用来张量的数据类型转换

发布了31 篇原创文章 · 获赞 0 · 访问量 683

猜你喜欢

转载自blog.csdn.net/ballzy/article/details/105299089