1.np.ravel()方法
ravel是将数组维度拉成一维数组,也就是将矩阵向量化
x = np.array{ [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] }
print(np.ravel(x))
输出
[ 1 2 3 4 5 6 ]
2.b = a[np.newaxis,:]
import numpy as np
a = np.arange(0, 10)
print('a.shape',a.shape)
print('a',a)
b = a[np.newaxis,:]
c = a[:,np.newaxis]
print('b.shape',b.shape)
print('b',b)
print('c.shape',c.shape)
print('c',c)
输出:
a.shape (10,)
a [0 1 2 3 4 5 6 7 8 9]
b.shape (1, 10)
b [[0 1 2 3 4 5 6 7 8 9]]
c.shape (10, 1)
c [[0][1][2][3][4][5][6][7][8][9]]
3.tf.device()
使用 tf.device() 指定模型运行的具体设备,可以指定运行在GPU还是CPU上,以及哪块GPU上。
使用 tf.device(’/gpu:1’) 指定Session在第二块GPU上运行
tensorflow中不同的GPU使用/gpu:0和/gpu:1区分,而CPU不区分设备号,统一使用 /cpu:0
4.tf.train.RMSPropOptimizer
是一种优化算法,有很多种优化算法,具体见下面这个文档,有空好好学习下
https://www.cnblogs.com/bigcome/p/10084220.html
5.tf.train.Coordinator()
TensorFlow提供了两个类来实现对Session中多线程的管理:tf.Coordinator和 tf.QueueRunner,这两个类往往一起使用。
Coordinator类用来管理在Session中的多个线程,可以用来同时停止多个工作线程并且向那个在等待所有工作线程终止的程序报告异常,该线程捕获到这个异常之后就会终止所有线程。使用 tf.train.Coordinator()来创建一个线程管理器(协调器)对象。
QueueRunner类用来启动tensor的入队线程,可以用来启动多个工作线程同时将多个tensor(训练数据)推送入文件名称队列中,具体执行函数是 tf.train.start_queue_runners , 只有调用 tf.train.start_queue_runners 之后,才会真正把tensor推入内存序列中,供计算单元调用,否则会由于内存序列为空,数据流图会处于一直等待状态。
6.os.path.exists()
os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。
7.python中[-1]、[:-1]、[::-1]、[2::-1]的使用方法
import numpy as np
a=[1,2,3.4,5]
print(a)
[ 1 2 3 4 5 ]print(a[-1]) ###取最后一个元素
[5]print(a[:-1]) ### 除了最后一个取全部
[ 1 2 3 4 ]print(a[::-1]) ### 取从后向前(相反)的元素
[ 5 4 3 2 1 ]print(a[2::-1]) ### 取从下标为2的元素翻转读取
[ 3 2 1 ]
8.np.vstack
np.vstack:按垂直方向(行顺序)堆叠数组构成一个新的数组
In[3]:
import numpy as npIn[4]:
a = np.array([[1,2,3]])
a.shape
Out[4]:(1, 3)In [5]:
b = np.array([[4,5,6]])
b.shape
Out[5]:(1, 3)In [6]:
c = np.vstack((a,b)) # 将两个(1,3)形状的数组按垂直方向叠加
print(c)
c.shape # 输出形状为(2,3)
[[1 2 3]
[4 5 6]]
Out[6]:(2, 3)In [7]:
a = np.array([[1],[2],[3]])
a.shape
Out[7]:(3, 1)In [9]:
b = np.array([[4],[5],[6]])
b.shape
Out[9]:(3, 1)In [10]:
c = np.vstack((a,b)) # 将两个(3,1)形状的数组按垂直方向叠加
print(c)
c.shape # 输出形状为(6,1)
[[1]
[2]
[3]
[4]
[5]
[6]]
Out[10]:(6, 1)