函数书写声明
- 函数书写声明同Python全局
- 以下常用参数如不特殊注明,按照此解释
Pyplot
data=dict/pd.DataFrame
- 其他
- 属于kwargs中参数
- 传参时,相应键值对替代对应参数
- 其他
matplotlibrc
/current/dir/matplotplibrc
$MATPLOTLIBRC/matplotlibrc
~/.config/matplotlib/matplotlibrc(~/.matplotlib/matplotlibrc)
/path/to/matlabplot/mpl-data/matplotlibrc
1 | python -c 'import matplotlib as mpl; print(mpl.matplotlib_fname())' |
python2中默认字符编码方案是ascii,需要更改为utf-8
1 | import sys |
python3则默认为utf-8编码,无需其他操作
/path/to/matplotlib/mpl-data/fonts
中的字体
文件
- ttc和ttf格式参见cs_program/character
1 | ch=mpl.font_manager.FontProperties(fname=/path/to/font.ttf) |
1 | # 必须在`plt.plot()`类似的绘图语句执行之前执行 |
运行时指定“已安装”字体给当前执行mpl配置中默认字体
系统中已安装ttf字体,即fc-
查找目录
/usr/share/fonts/
$HOME/.local/share/fonts/
$HOME/.fonts/
/path/to/matplotlib/mpl-data/fonts/
中字体文件对应
字体
已安装字体指mpl.font_manager.FontManager
能找到字体,但
不是所有系统已安装字体,mpl均可找到、使用
1 | # 获取mpl所有可用字体并排序 |
字体文件问题:mpl不兼容ttc字体文件
缓存问题:mpl可能在~/.cache/matplotlib/
下有cache
文件,mpl会直接从中获取可用字体列表,新字体可能需
删除才能在mpl中生效
1 | # 获取mpl缓存文件夹 |
修改配置文件更改全局默认字体
将字体名称添加在默认字体族首位,作为最优先候选字体
1 | font.sans-serif : font-name, |
同样要求mpl能够找到、使用相应的字体文件
mpl一般在常用于包含有X11的图形化界面中,所以若X11不可用 则需修改mpl配置
对生成pdf、png、svg等,可以修改后端为Agg
运行时修改
1 | import matplotlib as mpl |
修改配置文件
1 | backend: TkAgg |
By default, matplotlib ships configured to work with a graphical user interface which may require an X11 connection. Since many barebones application servers don’t have X11 enabled, you may get errors if you don’t configure matplotlib for use in these environments. Most importantly, you need to decide what kinds of images you want to generate(PNG, PDF, SVG) and configure the appropriate default backend. For 99% of users, this will be the Agg backend, which uses the C++ antigrain rendering engine to make nice PNGs
整个窗口(句柄)
1 | fig=plt.figure(num=None, figsize=None, dpi=None, |
图像(子图)(句柄)
1 | None=plt.subplot(*arg, **karg) |
轴
这三个图像元素都是以句柄形式操作,可以理解为每次操作
都是在一个“容器”中操作,容器由plt管理,每次
plt.show()
将图像全部展示之后,容器被回收,创建新容器
因此plt.show()
之后,之前容器中的元素更改无法影响到新容器
plt
可以当作当前激活状态的axes元素的句柄使用
1 |
|
1 |
|
1 | list=ax.pie(x, explode=None/list(%), labels=None/list, |
1 | list=ax.boxplot(x, notch=False, sym=None/str, |
1 | $ jupyter notebook --generate-config |
1 | c.NotebookApp.password = u'sha1:xxxxxxxx' |
1 | from notebook.auth import passwd |
jupyter必须使用https登陆、访问
因此服务端必须有ssl证书,
1 | openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout key_name.key -out cert_name.pem |
访问时也必须加上https://
前缀,一般默认http://
前缀
会报服务器无响应(没配置重定向,应该是)
可以看作包含两个Index类(index、columns)、一个二维ndarray类 (values)
1 | DF = pd.DataFrame( |
可以通过DF = df1.T
作转制更改行列逻辑
1 | Ser = df1[col_name] |
.loc[]
行优先,逻辑和df1[]列优先类似
1 | Ser = df.loc[index_name] |
.iloc[]
indices locate,应视为对value(ndarray)进行操作,index和 columns的结构对其没有任何影响
1 | Ser = df1.iloc[indice] |
.ix[]
.loc
、.iloc
的封装,不建议使用
.loc
,除非参数为int、且Index不是int类型1 | Ser = df1.ix[index] |
只能、必须取一个值
对于多重索引必须将Index、Columns所有level全部指定
.iat
1 | Val = df1.iat[index_indice, col_indice] |
.at
1 | Val = df1.at[index_name, col_name] |
切片对象是values
1 | DF = df1.iloc[irow_start: irow_end, icol_start: icol_end] |
切片对象是index,包括上限
1 | DF = df1.loc[ |
1 | DF = df1.loc[[(index_0, index_1,...),...]] |
1 | DF = df1[[col_name,...]] |
DF数据(values)共享的逻辑
copy
参数,可以显式控制是否拷贝副本.reindex
默认拷贝副本1 | df1_T = df1.T |
使用integer作为index时注意df1.ix[]的逻辑
层级索引允许以低维度形式表示高纬度数据
(level_0, level_1,...)
from_arrays
1 | Index = pd.MultiIndex.from_arrays( |
说明:将arrays转换为MultiIndex
参数
arrays
:包含多个list作为各个level索引sortorder
:sortedness级别?names
:level名from_tuples
1 | Index = pd.MultiIndex.from_tuples( |
说明:将tuples
转换为MultiIndex
参数
tuples
:每个tuple为一个index,按照tuple中元素顺序
决定各元素levelfrom_product
1 | Index = pd.MultiIndex.from_product( |
iterables
元素作product(积)作为MultiIndexSeries:可以看作是包含一个Index类(index,存放标签)、一个一维ndarray类(values,存放数据)
a. ser=pd.Series(data=np.darray/dict, index=list)
b. Series对象可以处理标签不一致的数据,但是只有标签的交集才能得到有意义的结果,其余为NaN
c. 其余性质类似于DataFrame对象
Index属性#todo
a. index属性
df1.columns=[]:更改列名称,index同
df1.columns.names=[]:更改列名,index同
pandas库中的其他一些问题
a. 数据类型转换:Series对象和DF对象在运算过程中dtype类型可能发生”无意义”的转换
dtype=i8的对象之间的+、-结果为dtype=f8类型的对象(当然这个可能是保持和\的一致性)
SeriesObj.reindex(new_index)会”可能”会改变原有数据类型(由i8->f8)(有增加新index时)
函数书写声明同Python全局
以下常用参数如不特殊注明,按照此解释
target = ""/str
graph = None/tf.Graph
config = None/tf.ConfigProto
None
,默认配置fetches = tf.OPs/[tf.OPs]
feed_dict = None/dict
tf.placeholder
(强制要求)name = None/str
None/OP类型
,后加上顺序后缀_[num]
后缀axis = None/0/int
None
:大部分,表示在整个张量上运算0
:有些运算难以推广到整个张量,表示在首轴(维)keepdims=False/True
False
不保持dtype=tf.int32/tf.float32/...
shape/dims=(int)/[int]
None/1
???-1
表示该轴维数由TF计算得到start=int
0
stop=int
- TensorFlow将计算的定义、执行分开
FileWriter
记录logtf.nn
tf.nn
:神经网络功能支持模块
rnn_cell
:构建循环神经网络子模块tf.contrib
tf.contrib
:包含易于变动、实验性质的功能
bayesflow
:包含贝叶斯计算cloud
:云操作cluster_resolver
:集群求解compiler
:控制TF/XLA JIT编译器copy_graph
:在不同计算图之间复制元素crf
:条件随机场cudnn_rnn
:Cudnn层面循环神经网络data
:构造输入数据流水线decision_trees
:决策树相关模块deprecated
:已经、将被替换的summary函数distributions
:统计分布相关操作estimator
:自定义标签、预测的对错度量方式factorization
:聚类、因子分解ffmpeg
:使用FFmpeg处理声音文件framework
:框架类工具,包含变量操作、命令空间、
checkpoint操作gan
:对抗生成相关graph_editor
:计算图操作grid_rnn
:GridRNN相关image
:图像操作input_pipeline
:输入流水线integrate
:求解常微分方程keras
:Keras相关APIkernel_methods
:核映射相关方法kfac
:KFAC优化器labeled_tensor
:有标签的Tensorlayers
:类似nn里面的函数,经典CNN方法重构learn
:类似ski-learn的高级APIlegacy_seq2seq
:经典seq2seq模型linalg
:线性代数linear_optimizer
:训练线性模型、线性优化器lookup
:构建快速查找表losses
:loss相关memory_stats
:设备内存使用情况meta_graph_transform
:计算图转换metrics
:各种度量模型表现的方法nccl
:收集结果的操作ndlstm
:ndlstm相关nn
:tf.nn
某些方法的其他版本opt
:某些优化器的其他版本predictor
:构建预测器reduce_slice_ops
:切片规约remote_fused_graph
resampler
:重抽样rnn
:某些循环神经网络其他版本saved_model
:更加易用的模型保存、继续训练、模型转换seq2seq
:seq2seq相关模型session_bundle
signal
:信号处理相关slim
:contrib主模块交互方式、主要入口solvers
:贝叶斯计算sparsemax
:稀疏概率激活函数、相关lossspecs
staging
:分段输入stat_summarizer
:查看运行状态statless
:伪随机数tensor_forest
:可视化工具testing
:单元测试工具tfprof
:查看模型细节工具timeseries
:时间序列工具tpu
:TPU配置training
:训练及输入相关工具util
:Tensors处理相关工具tf.train
tf.train
:训练模型支持
优化器
AdadeltaOptimizer
:Adadelta优化器AdamOptimizer
:Adam优化器GradientDescentOptimizer
:SGD优化器MomentumOptimizer
:动量优化器RMSPropOptimizer
:RMSProp优化器数据处理
Coordinator
:线程管理器QueueRunner
:管理读写队列线程NanTensorHook
:loss是否为NaN的捕获器create_global_step
:创建global stepmatch_filenames_once
:寻找符合规则文件名称start_queue_runners
:启动计算图中所有队列tfrecord数据
Example
:tfrecord生成模板batch
:生成tensor batchshuffle_batch
:创建随机tensor batch模型保存、读取
Saver
:保存模型、变量类NewCheckpointReader
:checkpoint文件读取get_checkpoint_state
:从checkpoint文件返回模型状态init_from_checkpoint
:从checkpoint文件初始化变量latest_checkpoint
:寻找最后checkpoint文件list_variable
:返回checkpoint文件变量为列表load_variable
:返回checkpoint文件某个变量值tf.summary
tf.summary
:配合tensorboard展示模型信息
FileWriter
:文件生成类Summary
get_summary_description
:获取计算节点信息histogram
:展示变量分布信息image
:展示图片信息merge
:合并某个summary信息merge_all
:合并所有summary信息至默认计算图scalar
:展示标量值text
:展示文本信息nvcc
:CUDA-C、CUDA-C++编译器,依赖nvvm
优化器
(nvvm
本身依赖llvm
编译器)debuggers
、profiler
等工具TensorBoard是包括在TensorFlow中可视化组件
1 | $ tensorboard --logdir=/path/to/logdir --port XXXX |
Your CPU supports instructions that this TensorFlow binary was not cmpiled to use: SSE1.4, SSE4.2, AVX AVX2 FMA
1 | import os |
Keras是一个模型级的库,提供了快速构建深度学习网络的模块
Keras并不处理如张量乘法、卷积等底层操作,而是依赖于某种 特定的、优化良好的张量操作库
Keras依赖于处理张量的库就称为“后端引擎”
Keras将其函数统一封装,使得用户可以以同一个接口调用不同 后端引擎的函数
KERAS_BACKEND
覆盖配置文件中设置(见python
修改环境变量的3中方式)可以通过Keras后端接口来编写代码,使得Keras模块能够同时在 Theano和TensorFlow两个后端上使用
1 | from keras import backend as K |
backend
返回当前后端
epsilon
1 | K.epsilon() |
返回数字表达式使用fuzz factor
set_epsilon
1 | K.set_epsilon(e(float)) |
设置模糊因子的值
floatx
1 | K.floatx() |
返回默认的浮点数数据类型
float16
float32
float64
set_floatx
1 | K.set_floatx( |
设置默认的浮点数数据类型(字符串表示)
cast_to_floatx
1 | K.cast_to_floatx(x) |
将NDA转换为默认的Keras floatx类型(的NDA)
例子
1 | K.floatx() |
image_data_format
1 | K.image_data_format() |
返回图像的默认维度顺序
channels_last
channels_first
set_image_data_format
1 | K.set_image_data_format( |
设置图像的默认维度顺序
is_keras_tensor
判断是否是Keras Tensor对象
1 | np_var = np.array([1, 2]) |
get_uid
1 | K.get_uid(prefix=''/str) |
获得默认计算图的uid
说明
参数
prefix
:图的可选前缀返回值:图的唯一标识符
reset_uids
1 | K.reset_uids() |
重置图的标识符
clear_session
1 | K.clear_session() |
结束当前的TF计算图,并创建新图
manual_variable_initialization
1 | K.manual_variable_initialization( |
设置变量手动初始化标志
参数
value
False
:默认,变量在实例时出事的(由其默认值
初始化)
True
:用户自行初始化,如
tf.initialize_all_variables()
learning_phase
返回学习阶段标致
返回值:布尔张量
0
:测试模式1
:训练模式set_learning_phase
1 | K.set_learning_phase( |
设置学习阶段为固定值
value
:学习阶段值0
:测试模式1
:训练模式is_sparse
判断一个Tensor是不是一个稀疏的Tensor
稀不稀疏由Tensor的类型决定,而不是Tensor实际上有多稀疏
1 | from keras import backend as K |
to_dense
将一个稀疏tensor转换一个不稀疏的tensor并返回
variable
1 | def variable( |
实例化一个张量,返回之
value
:用来初始化张量的值dtype
:张量数据类型name
:张量的名字(可选)placeholder
1 | def placeholder( |
实例化一个占位符
参数
shape
:占位符的shape(整数tuple,可能包含None)ndim
: 占位符张量的阶数shape
和ndim
之一,
如果都指定则使用shape
dtype
: 占位符数据类型name
: 占位符名称(可选)shape
1 | def shape(x) |
返回张量的符号shape
1 | from keras import backend as K |
int_shape
1 | def int_shape(x) |
返回张量shape
tuple(int)/None
1 | from keras import backend as K |
ndim
1 | def ndim(x) |
返回张量的阶数
1 | from keras import backend as K |
dtype
1 | def dtype(x) |
返回张量的数据类型
float32
float32_ref
1 | from keras import backend as K |
eval
1 | def eval(x) |
求得张量的值
1 | from keras import backend as K |
1 | def zeros( |
生成shape
大小的全0张量
1 | from keras import backend as K |
ones
1 | def ones( |
生成shape
大小的全1张量
eye
1 | def eye( |
生成size
大小的单位阵
zeros_like
1 | def zeros_like( |
生成与x
shape相同的全0张量
ones_like
1 | def ones_like( |
生成与x
shape相同的全1张量
random_uniform_variable
1 | def random_uniform_variable( |
初始化均匀分布常量OPs
low
:浮点数,均匀分布之下界high
:浮点数,均匀分布之上界dtype
:数据类型name
:张量名seed
:随机数种子count_params
1 | def count_params(x) |
返回张量中标量的个数
cast
1 | def cast(x, dtype) |
改变张量的数据类型
dtype
:float16
/float32
/float64
update
1 | def update(x, new_x) |
用new_x
更新x
update_add
1 | def update_add(x, increment) |
将x
增加increment
并更新x
update_sub
1 | def update_sub(x, decrement) |
将x
减少decrement
并更新x
moving_average_update
1 | def moving_average_update( |
使用移动平均更新x
dot
1 | def dot(x, y) |
求两个张量的点乘
1 | x = K.placeholder(shape=(2, 3)) |
当试图计算两个N阶张量的乘积时,与Theano行为相同
(2, 3).(4, 3, 5) = (2, 4, 5))
1 | x = K.placeholder(shape=(32, 28, 3)) |
1 | x = K.random_uniform_variable(shape=(2, 3), low=0, high=1) |
batch_dot
1 | def batch_dot(x, y, axes=None) |
按批进行张量x
和y
的点积
x
:按batch分块的数据y
;同x
axes
:指定进行点乘的轴1 | x_batch = K.ones(shape=(32, 20, 1)) |
transpose
1 | def transpose(x) |
张量转置
gather
1 | def gather(reference, indices) |
在给定的张量中检索给定下标的向量
参数
reference
:张量indices
:整数张量,其元素为要查询的下标返回值:同reference
数据类型相同的张量
max
1 | def max( |
求张量中的最大值
min
1 | def min(x, axis=None, keepdims=False) |
求张量中的最小值
sum
1 | sum(x, axis=None, keepdims=False) |
计算张量中元素之和
prod
1 | prod(x, axis=None, keepdims=False) |
计算张量中元素之积
cumsum
1 | def cumsum(x, axis=0) |
在给定轴上求张量的累积和
cumprod
1 | cumprod(x, axis=0) |
在给定轴上求张量的累积积
var
1 | def var(x, axis=None, keepdims=False) |
在给定轴上计算张量方差
std
1 | def std(x, axis=None, keepdims=False) |
在给定轴上求张量元素之标准差
mean
1 | def mean(x, axis=None, keepdims=False) |
在给定轴上求张量元素之均值
any
1 | def any(x, axis=None, keepdims=False) |
按位或,返回数据类型为uint8的张量(元素为0或1)
all
1 | def any(x, axis=None, keepdims=False) |
按位与,返回类型为uint8de tensor
argmax
1 | def argmax(x, axis=-1) |
在给定轴上求张量之最大元素下标
argmin
1 | def argmin(x, axis=-1) |
在给定轴上求张量之最小元素下标
square
1 | def square(x) |
逐元素平方
abs
1 | def abs(x) |
逐元素绝对值
sqrt
1 | sqrt(x) |
逐元素开方
exp
1 | def exp(x) |
逐元素求自然指数
log
1 | def log(x) |
逐元素求自然对数
logsumexp
1 | def logsumexp(x, axis=None, keepdims=False) |
在给定轴上计算log(sum(exp()))
log(sum(exp()))
,可以
避免由exp
和log
导致的上溢和下溢round
1 | def round(x) |
逐元素四舍五入
sign
1 | def sign(x) |
逐元素求元素的符号
+1
-1
pow
1 | def pow(x, a) |
逐元素求x的a次方
clip
1 | def clip( |
逐元素clip(将超出指定范围的数强制变为边界值)
equal
1 | def equal(x, y) |
逐元素判相等关系
not_equal
1 | def not_equal(x, y) |
逐元素判不等关系
greater
1 | def greater(x,y) |
逐元素判断x>y
关系
greater_equal
1 | def greater_equal(x,y) |
逐元素判断x>=y
关系
lesser
1 | def lesser(x,y) |
逐元素判断x<y
关系
lesser_equal
1 | def lesser_equal(x,y) |
逐元素判断x<=y
关系
maximum
1 | def maximum(x, y) |
逐元素取两个张量的最大值
minimum
1 | def minimum(x, y) |
逐元素取两个张量的最小值
sin
1 | def sin(x) |
逐元素求正弦值
cos
1 | def cos(x) |
逐元素求余弦值
batch_normalization
1 | def batch_normalization( |
对batch的数据进行batch_normalization,计算公式为: $output = (x-mean)/(\sqrt(var)+\epsilon)*\gamma+\beta$
mean
、var
normalize_batch_in_training
1 | def normalize_batch_in_training( |
对batch数据先计算其均值和方差,然后再进行
batch_normalization
concatenate
1 | def concatenate(tensors, axis=-1) |
在给定轴上将一个列表中的张量串联为一个张量
reshape
1 | def reshape(x, shape) |
将张量的shape变换为指定shape
permute_dimensions
1 | def permute_dimensions( |
按照给定的模式重排一个张量的轴
pattern
:代表维度下标的tuple如(0, 2, 1)
resize_images
1 | def resize_images( |
依据给定的缩放因子height_factor
、width_factor
,改变batch
数据(图片)的shape
height_factor
/width_factor
:正整数resize_volumes
1 | def resize_volumes( |
依据给定的缩放因子,改变一个5D张量数据的shape
repeat_elements
1 | def repeat_elements(x, rep, axis) |
在给定轴上重复张量元素rep
次
np.repeat
类似repeat
1 | def repeat(x, n) |
重复2D张量
arange
1 | def arange( |
生成1D的整数序列张量
参数:同np.arange
0~stop
返回值:默认数据类型是int32
的张量
tile
1 | def tile(x, n) |
将x
在各个维度上重复n[i]
次
batch_flatten
1 | def batch_flatten(x) |
将n阶张量转变为2阶张量,第一维度保留不变
expand_dims
1 | def expand_dims(x, dim=-1) |
在dim
指定轴后增加一维(轴)
squeeze
1 | def squeeze(x, axis) |
将axis
指定的轴从张量中移除(保留轴上首组张量切片)
temporal_padding
1 | def temporal_padding(x, padding=1) |
向3D张量中间那个维度的左右两端填充padding
个0值
asymmetric_temporal_padding
1 | def asymmetric_temporal_padding( |
向3D张量中间的那个维度的左右分别填充0值
spatial_2d_padding
1 | def spatial_2d_padding( |
向4D张量高度、宽度左右两端填充padding[0]
和padding[1]
个0值
spatial_3d_padding
1 | def spatial_3d_padding( |
向5D张量深度、高度、宽度三个维度上填充0值
stack
1 | def stack(x, axis=0) |
将列表x
中张量堆积起来形成维度+1的新张量
one_hot
1 | def one_hot(indices, nb_classes) |
为张量indices
进行one_hot编码
indices
:n维的整数张量nb_classes
:one_hot编码列表reverse
1 | def reverse(x, axes) |
将一个张量在给定轴上反转
get_value
1 | def get_value(x) |
以NDA的形式返回张量的值
batch_get_value
1 | def batch_get_value(x) |
以[NDA]
的形式返回多个张量的值
set_value
1 | def set_value(x, value) |
从NDA将值载入张量中
batch_set_value
1 | def batch_set_value(tuples) |
将多个值载入多个张量变量中
print_tensor
1 | def print_tensor(x, message='') |
在求值时打印张量的信息,并返回原张量
function
1 | def function(inputs, outputs, updates=[]) |
实例化一个Keras函数
inputs
:列表,其元素为占位符或张量变量outputs
:输出张量的列表updates
:张量列表gradients
1 | def gradients(loss, variables) |
返回loss
函数关于variables
的梯度
stop_gradient
1 | def stop_gradient(variables) |
Returns variables
but with zero gradient with respect to every other variables.
rnn
1 | def rnn( |
在张量的时间维上迭代
参数:
inputs
:时域信号的张量,阶数至少为3
step_function
:每个时间步要执行的函数
参数
input
:不含时间维张量,代表某时间步batch样本states
:张量列表返回值
output
:形如(samples, ...)
的张量new_states
:张量列表,与states
的长度相同 initial_states
:包含step_function
状态初始值
go_backwards
:逆向迭代序列
mask
:需要屏蔽的数据元素上值为1
constants
:按时间步传递给函数的常数列表
unroll
True
将展开递归网络input_length
返回值:形如(last_output, outputs, new_states)
的张量
last_output
:RNN最后的输出outputs
:每个在[s,t]点的输出对应于样本s在t时间的输出new_states
: 每个样本的最后一个状态列表switch
1 | def switch( |
依据给定condition
(整数或布尔值)在两个表达式之间切换
condition
:标量张量then_expression
:TensorFlow表达式else_expression
: TensorFlow表达式in_train_phase
1 | def in_train_phase(x, alt) |
如果处于训练模式,则选择x
,否则选择alt
alt
应该与x
的shape
相同in_test_phase
1 | def in_test_phase(x, alt) |
如果处于测试模式,则选择x
,否则选择alt
alt
应该与x
的shape相同relu
1 | def relu( |
修正线性单元
alpha
:负半区斜率max_value
: 饱和门限elu
1 | def elu(x, alpha=1.0) |
指数线性单元
x
:输入张量alpha
: 标量softmax
1 | def softmax(x) |
计算张量的softmax值
softplus
1 | def softplus(x) |
返回张量的softplus值
softsign
1 | def softsign(x) |
返回张量的softsign值
sigmoid
1 | def sigmoid(x) |
逐元素计算sigmoid值
hard_sigmoid
1 | def hard_sigmoid(x) |
分段线性近似的sigmoid,计算速度更快
tanh
1 | def tanh(x) |
逐元素计算tanh值
categorical_crossentropy
1 | def categorical_crossentropy( |
计算output
、target
的Categorical Crossentropy(类别交叉熵)
output
/target
:shape相等sparse_categorical_crossentropy
1 | def sparse_categorical_crossentropy( |
计算output
、target
的Categorical Crossentropy(类别交叉熵)
output
target
:同output
shape相等,需为整形张量binary_crossentropy
1 | def binary_crossentropy( |
计算输出张量和目标张量的交叉熵
dropout
1 | def dropout(x, level, seed=None) |
随机将x
中一定比例的值设置为0,并放缩整个Tensor
l2_normalize
1 | def l2_normalize(x, axis) |
在给定轴上对张量进行L2范数规范化
in_top_k
1 | def in_top_k(predictions, targets, k) |
判断目标是否在predictions
的前k大值位置
参数
predictions
:预测值张量targets
:真值张量k
:整数conv1d
1 | def conv1d( |
1D卷积
kernel
:卷积核张量strides
:步长,整型border_mode
conv2d
1 | def conv2d( |
2D卷积
kernel
:卷积核张量strides
:步长,长为2的tupledeconv2d
1 | def deconv2d( |
2D反卷积(转置卷积)
x
:输入张量kernel
:卷积核张量output_shape
: 输出shape的1D的整数张量strides
:步长,tuple类型conv3d
1 | def conv3d( |
3D卷积
pool2d
1 | def pool2d( |
2D池化
pool_size
:含有两个整数的tuple,池的大小strides
:含有两个整数的tuple,步长pool_mode
: “max”,“avg”之一,池化方式pool3d
1 | def pool3d( |
3D池化
bias_add
1 | def bias_add(x, bias, data_format=None) |
为张量增加一个偏置项
random_normal
1 | def random_normal( |
生成服从正态分布的张量
mean
:均值stddev
:标准差random_uniform
1 | def random_uniform( |
生成服从均匀分布值的张量
minval
:上界maxval
:上界random_binomial
1 | def random_binomial( |
返回具有二项分布值的张量
p
:二项分布参数truncated_normall
1 | def truncated_normal( |
生成服从截尾正态分布值的张量,即在距离均值两个标准差之外的 数据将会被截断并重新生成
ctc_label_dense_to_sparse
1 | def ctc_label_dense_to_sparse(labels, label_lengths) |
将ctc标签从稠密形式转换为稀疏形式
ctc_batch_cost
1 | def ctc_batch_cost( |
在batch上运行CTC损失算法
参数
y_true
:包含标签的真值张量y_pred
:包含预测值或输出的softmax值的张量input_length
:包含y_pred
中每个batch的序列长label_length
:包含y_true
中每个batch的序列长张量返回值:包含了每个元素的CTC损失的张量
ctc_decode
1 | def ctc_decode( |
使用贪婪算法或带约束的字典搜索算法解码softmax的输出
参数
y_pred
:包含预测值或输出的softmax值的张量input_length
:包含y_pred
中每个batch序列长的张量greedy
:使用贪婪算法dict_seq_lens
:dic_values
列表中各元素的长度dict_values
:列表的列表,代表字典返回值:包含了路径可能性(以softmax概率的形式)张量
注意仍然需要一个用来取出argmax和处理空白标签的函数
map_fn
1 | def map_fn(fn, elems, name=None) |
元素elems在函数fn上的映射,并返回结果
参数
fn
:函数elems
:张量name
:节点的名字返回值:张量的第一维度等于elems
,第二维度取决于fn
foldl
1 | def foldl( |
用fn从左到右连接它们,以减少elems
值
参数
fn
:函数,例如:lambda acc, x: acc + xelems
:张量initializer
:初始化的值(elems[0])name
:节点名返回值:与initializer
类型和形状一致
foldr
1 | def foldr( |
减少elems
,用fn
从右到左连接它们
参数
fn
:函数,例如:lambda acc, x: acc + xelems
:张量initializer
:初始化的值(elems[-1])name
:节点名返回值:与initializer
类型和形状一致
_width=None,
dict_seq_lens=None,
dict_values=None
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
使用贪婪算法或带约束的字典搜索算法解码softmax的输出
- 参数
- `y_pred`:包含预测值或输出的softmax值的张量
- `input_length`:包含`y_pred`中每个batch序列长的张量
- `greedy`:使用贪婪算法
- `dict_seq_lens`:`dic_values`列表中各元素的长度
- `dict_values`:列表的列表,代表字典
- 返回值:包含了路径可能性(以softmax概率的形式)张量
- 注意仍然需要一个用来取出argmax和处理空白标签的函数
#### `map_fn`
```python
def map_fn(fn, elems, name=None)
元素elems在函数fn上的映射,并返回结果
参数
fn
:函数elems
:张量name
:节点的名字返回值:张量的第一维度等于elems
,第二维度取决于fn
foldl
1 | def foldl( |
用fn从左到右连接它们,以减少elems
值
参数
fn
:函数,例如:lambda acc, x: acc + xelems
:张量initializer
:初始化的值(elems[0])name
:节点名返回值:与initializer
类型和形状一致
foldr
1 | def foldr( |
减少elems
,用fn
从右到左连接它们
参数
fn
:函数,例如:lambda acc, x: acc + xelems
:张量initializer
:初始化的值(elems[-1])name
:节点名返回值:与initializer
类型和形状一致
name
:节点名
返回值:与initializer
类型和形状一致
merge
1 | DF = pd.merge( |
功能:合并操作,类似于sql的join操作
参数
on
:merge合并基准列,可以是多个列名称的list,df1、
df2仅有一列名称相同时可省略,否则返回空DF对象left_on
、right_on
:df1、df2合并基准列名称不同时
使用left_index
、right_index
:默认为False
,值为
True
时使用索引作为基准进行合并(此时也可以使用
df1.join(df2)
)how
:合并方式,默认是inner join,参数取值:’outer’
、’left’、’right’(不知道能不能取’inner’,这个应该
是默认取值,可以使用)其他
join
1 | DF = df1.join( |
说明:和其他DF对象进行join操作
参数
other
on
None
,按照index-on-index进行joinhow
:同上lsuffix
:df1重名列使用的后缀rsuffix
:df2重名列使用的后缀sort
:按照join-key排序concat
1 | Df/Ser = pd.concat( |
说明:以某个轴为方向将多个Series对象或DF对象拼接
参数
objs
keys
join
:处理其他轴的方式(其他轴长度、命名不同)join_axes
:指定其他轴的indexingore_index
:默认False
,为True
拼接后的DF的
Index将为RangeIndexkeys
:指定构建多级索引最外层Indexlevels
:用于构建多重索引的具体层级,默认从keys
推断names
:返回DF对象索引名称verify_integrity
:默认False
,不检查返回DF对象
是否含有重复index
copy
:默认拷贝数据其他
pd.concat
只涉及拼接方向,而merge只能沿列数增加的
方向“拼接”
pd.concat()
时即使有相同的列名称、index序号也不会
重命名
pd.concat(axis=1,...)
和
pd.merge(left_index=True, right_index=True,...)
的
作用应该是一样的,只是不会将相同的列名称重命名
pd.merge
可以指定合并基准列,而pd.concat
只能按
Index“合并”,且只能inner join或时outer join
注意事项
pd.concat
默认会对索引进行排序,所以若索引包含不可
比较元素则会报错,尤其是在多重索引情况下
改变索引类型规避
1 | # 改为categorical索引 |
reset索引规避
1 | df_new = pd.cancat([df1.reset_index(), df2.reset_index()]) |
pd.concat
连接会尝试转换数据类型,如:
pd.Timestamp
可能会被转换为int
combine_first
1 | Ser = ser1.combine_first(other(Ser)) |
drop
1 | DF/None = df1.drop( |
说明:删除df1某轴上的labels
参数
columns
/index
:替代axis
+label
指定需要删除的
列/行[new_col_name]
1 | df1[new_col_name] = list |
.iloc[new_index_name]
不可用append
1 | DF = df1.append( |
other
行追加到df1del
1 | del df1[col_name] |
stack
1 | DF/Ser = df1.stack( |
说明:旋转level
级列索引
参数
dropna
:默认剔除返回DF/Ser对象中NULL行unstack
1 | DF/Ser = df1.unstack( |
说明:旋转level
级行索引
参数
fill_value
:替换NaN的值其他
df1.unstack().stack()
会
合并层级索引sort_index
1 | DF = df1.sort_index( |
说明:按照labels排序
参数
kind
:排序方法na_position
:默认将NaN放在开头sort_remaining
:默认依次对剩余层级排序sort_value
1 | DF = df1.sort_value( |
rank
1 | DF = df1.rank( |
说明:沿轴计算数值型数据的rank
参数
method
average
:组(延轴分组)rank平均min
/max
:组内最小/大first
:label出现顺序优先dense
:类似min
,但是rank值总是增加1numeric_only
:默认不考虑含有非数值型数据labelNone
na_option
keep
:NaN值rank值不变top
:NaN作为“小”值bottom
:NaN作为“大”值ascending
:默认小值rank值小pct
:默认不计算rank值占比take
1 | DF = df1.take( |
说明:按照indices对应的labels顺序返回DF
参数
indices
:指明返回indices、及其顺序convert
:是否处理负值indice(将废除,均处理)is_copy
:默认创建副本返回reindex
1 | DF = df1.reindex( |
说明:将DF对象转换有其他Index的对象
.take
,是选择不是重命名参数
labels
:新Index,配合axis
决定替换轴index
/columns
:两根轴的Indexmethod
:新labels值填补方法copy
:默认拷贝副本fill_value
:新labels值填补值limit
:允许最长连续使用method
方法填补值tolerance
:使用method
方法填补新labels值时,用于
填补labels和新labels的最大差距tolerance
则为默认NaN1 |
|
value_count
1 | Ser = pd.value_counts( |
说明:计算hisgram
参数
sort
:默认按值排序normalize
:默认不正则化(计算相对histgram)bins
:hisgrams划分binsint
时表示数目,(min, max]
均等分[num]
计算列表内数量(范围外不考虑)dropna
:默认不计算NaN值个数quantile
1 | Ser/DF = df1.quantile( |
说明:计算q
分位数
参数
q
:分位,可以是列表,计算多个分位数interpolation
:分位数计算方式(分位数位i、j间)linear
:i+(j-i)*fraction
(线性回归)low
:i
high
:i+1
nearest
:i
、i+1
中近者midpoint
:(i
+j
)/2apply
1 | DF/Ser = df1.apply( |
说明:对df1
沿轴方向labels应用func
agg
transform
,但包含用于groupby的labelfunc
也仅能为单一
function,而agg
可以使用各种参数
broadcast
:仅对aggregation(聚合)函数,默认不保持
原shaperaw
:默认不是将label作为ndarray对象传递,而是保持
Series对象True
性能更好reduce
:默认根据函数判断是否返回DFFalse
:尽量返回DF对象result_type
expand
:返回DF对象reduce
:尽量返回Ser对象broadcast
:保持原shape返回args
:传递给func
的VAR_POSITIONskwargs
:传递给func
的VAR_KEYWORDsagg
1 | DF = df1.agg( |
说明:聚合
参数
func
transform
1 | DF = df1/dfgb1.transform( |
func
处理后DFaxis=0
的agg
、apply
replace
1 | DF = df1.replace( |
说明:替换
参数
to_replace
:被替换对象value
value
也为list时,长度必须相同value
功能)regex
必为str/[]/{}/Servalue
:替换值to_replace
相同limit
:允许最长连续bfill、ffill替换regex
True
时,to_replace
、value
将作为regexto_replace
作regex替换method
:to_replace
为list时替换方法说明
to_replace
为{regex:str}时,只替换DF中str匹配的部分
,如果需要替换整个str,需要^.*str.*$
匹配整个str^.*str.*$
也会匹配整个str
并替换为intwhere
1 | df = df1.where( |
说明:mask True
,替换False
为other
值,默认(other
中无法找到对应值)NaN
cond
、other
是按照[index][col]
对应位置,而不是
打印位置参数
cond
True
保持原值不变,False
从other
替换df1
上,返回DF(bool),不应改变
`dfcond
不提供位置视为被替换1`other
df1
上,返回DF用于替换axis
:alignment axis if neededlevel
:alignemnt level if needederrors
raise
:允许raise exceptionsignore
:suppress exceptions,错误时返回原对象try_cast
:默认不尝试将结果cast为原输入mask
1 | DF = df1.mask( |
True
、False
mask规则同where
相反,其他同isin
1 | DF = df1.isin( |
说明:判断元素是否存在于values
中
参数
values
True
df1
元素在dict中对应键值中存在为True
df1
元素在DF对应index、columns labels存在
才为True
to_numeric
1 |
|
说明:转换为numeric类型
参数
errors
raise
:无效值将raise exceptioncoerce
:无效值设为NaNignore
:无效值保持原样downcast
:根据参数downcast值为“最小”类型errors
影响to_datetime
1 | Ser = pd.to_datetime( |
说明:转换为datetime
参数
dayfirst
:处理类”10/11/12”,设置day在前yearfirst
:处理类”10/11/12”,设置year在前utc
:默认不返回UTC DatatimeIndexbox
True
:返回DatetimeIndexFalse
:返回ndarray值format
:parse格式,如”%d/%m/%y %H:%M:%S”exact
:默认要求arg
精确匹配format
unit
:arg
传递数值时作为单位infer_datatime_format
:在format
为None
时,尝试
猜测格式,并选择最快的方式parse,耗时5~10倍origin
:决定参考(起始)时间unix
:起始时间:1970-01-01julian
:4714 BC 1.1(此时unit
必须为D
)infer_objects
1 | DF = df1.infer_objects() |
astype
1 | DF = df.astype( |
说明:强制转换为dtype
类型
参数
copy
:默认返回拷贝kwargs
:传递给构造函数的参数map
1 | Ser = ser1.map( |
说明:对Ser中元素进行映射
参数
arg
no_action
:默认对NA也处理,否则忽略其他
apply(convert_type=True)
,如
直接取值是np.float64
类型,传给函数就变成了float
类型apply
1 | Ser = ser1.apply( |
说明:在Ser上应用func
参数
func
convert_type
:默认转换为合适的类型,否则设为
dtype=object
agg
1 | Ser = ser1.agg( |
apply
完全相同,只是参数不同,但axis
没用cut
1 | Ser = pd.cut( |
说明:返回各个元素所属区间,同时也是对应indice
参数
bins
:左开右闭x
等分(事实上为了包含最小值,bins
左边界会扩展.1%)bins
边界right
:默认包含right-most边界labels
:指定生成bins的labelsretbins
:默认不返回bins,设为True
将返回tupleprecision
:bins labels显示精度include_lowest
:第一个bin是否应该包括最小值bins=[]
有效True
仍然为左开右闭区间,但是左边界会小于
bins=[]
中的最小值qcut
1 | Ser = pd.qcut( |
说明:将x
按照q
划分分位数后进组(即按照数量分组)
参数
q
x
元素按照给出分位数分组duplicates
raise
:bins边缘不唯一raise exceptiondrop
:bins边缘不唯一则丢弃不唯一值groupby
1 | DFGB = df1.groupby( |
说明:根据by
对DF分组
参数
by
as_index
:默认使用分组依据作为分组Index(labels)sort
:默认组内各保持原DF顺序,可以关闭获得更好性能group_keys
:默认在calling apply时,添加group键用于
标识各组squeeze
:为True
时尽可能减少返回值维度,否则返回
consistent typepivot
1 | DF = df1.pivot( |
说明:根据某列值reshape数据(创建一个枢)
参数
index
:用作Index的列名,默认Indexcolumns
:用作Column的列名values
:填充进新DF对象的列名,默认所有剩余所有列
(列索引为层级索引)其他
set_index
1 | DF = df1.set_index( |
说明:用一列/多列作为新DF的Index(row labels)
参数
keys
:列名,列名列表drop
:默认删除用作Index的列append
:默认不保留原Index(不以添加方式设置
Index)verify_integrity
:默认不检查新Index是否唯一,直至
必要的时候reset_index
1 | DF = df1.reset_index( |
说明:
参数
level
:默认所有层级drop
:默认将Index作为一列添加col_level
:Index作为列添加进的列索引层次,默认
最高层col_fill
:对于多级索引,Index作为列添加时其他层级
的命名,默认xtts 其他
swaplevel
1 | DF = df.swaplevel( |
rename
1 | DF = df.rename( |
说明:修改labels(行、列名)
参数
mapper
:labels的重命名规则index
/columns
:行、列labels重命名规则mapper
+axis
index
columns
copy
:默认复制数据inplace
为True
时,此参数无效level
:默认重命名所有leveladd_prefix
1 | DF = df.add_prefix( |
unique
1 | bool = ser1.is_unique |
duplicated
1 | Ser(bool) = df1.duplicated( |
说明:返回标识“副本(元素相同)”行的Ser(bool)
参数
subset
:默认检查所有列,否则检查指定列keep
first
:重复者除第一个外标记为True
last
:重复者除最后一个外标记为True
True
1 | DF = df1.drop_duplicates( |
null
1 | DF(bool) = df1.isnull() |
dropna
1 | DF = df1.dropna( |
说明:剔除空labels(及其数据)
参数
how
:默认any NaN值存在剔除labelthresh
:剔除label的NaN值阈值subset
:指定考虑的labelsfillna
1 | DF = df1.fillna( |
说明:填补NaN值
参数
value
:用于填补NaN的值,dict-like时无法找到的NaN
不被填补method
limit
:填补允许的最大连续NaN值,超过部分保留NaNdowncast
:数据类型精度降级dict,或者"infer"
由
自行推断any
1 | Ser = df1(bool).any( |
说明:label(行、列)对应值存在真返回True
参数
skipna
:默认skip NA,如果全label为NA则结果为NAlevel
:默认考虑整个索引bool_only
:默认将所有转换为bool值再做判断