python和Keras.backend常见函数
python 常见函数(v3.0) lambda 匿名函数 # lambda <params>:<result> func = lambda x, y: x + y print(func(1, 2)) # 输出 3 map 函数 将 一个或多个 sequnce 中元素作为参数传递到 func 中执行,并以迭代器的方式将函数执行结果返回。 # map(func, sequnce[, sequnce,....]) -> iterator >> list(map(lambda x: x+2, [1,2,3])) [3, 4, 5] >> list(map(pow, [1,2,3], [2,3,4])) [1, 8, 81] filter 函数 过滤器, 若function为None,则会返回包含非空元素的迭代器。 # filter(func or None, sequence) -> iterator >> list(filter((lambda x: x>0),range(-5,5))) [1,2,3,4] >> list(filter(None,range(-5,5))) [-5, -4, -3, -2, -1, 1, 2, 3, 4] map 函数 对sequnce中元素依次执行 func, 并返回一个map对象 # map(func, sequence) >> map(lambda x: x*x*x, range(1, 11) <map object at 0x7fafdf0d6978> >> list(map(lambda x: x*x*x, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] 当 func 参数为多个参数时, sequence 数量与之对应 reduce 函数 迭代 sequence 中内容逐一调用相应函数, 返回一个结果 # reduce(func, sequence, starting_value) # starting_value 为初始调用值, 可为空或省略 >> reduce(lambda x, y: x + y, range(1, 11)) 55 在 python 3 之后如果想用 reduce 可以采用 functools, 因为其已经被移除 python 3 内置的功能, 方法如下: import functools functools.reduce(lambda x, y: x + y, range(1, 11)) zip 函数 接收 sequence 对象作为参数, 将对象中对应的元素打包成为一个个 tuple, 然后返回由这些 tuples 组成的 list. 若传入参数的长度不等, 则返回 list 的长度和参数中长度最短的对象相同. 使用 * 操作符与 zip 函数配合可以实现与 zip 相反的功能,即将合并的序列拆成多个 tuple. # zip([sequence, ...]) >> x = [1, 2, 3]; y = ['a', 'b', 'c'] >> list(zip(x, y)) [(1,'a'),(2,'b'),(3,'c')] >> list(zip(*zip(x, y))) [(1,2,3),('a','b','c')] # 长度不一样 >> x = [1, 2, 3]; y = ['a', 'b', 'c', 'd'] >> list(zip(x, y)) [(1,'a'),(2,'b'),(3,'c')] >> list(zip(*zip(x, y))) [(1,2,3),('a','b','c')] keras 样本打散 # data_x 是 numpy.array 对象 indices = numpy.random.permutation(data_x.shape[0]) # shape[0]表示第0轴的长度,通常是训练数据的数量 rand_data_x = data_x[indices] rand_data_y = data_y[indices] # data_y就是标记(label)