python和Keras.backend常见函数

  1. 云栖社区>
  2. 博客>
  3. 正文

python和Keras.backend常见函数

ilufei2019 2018-05-18 12:05:00 浏览484
展开阅读全文

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)

网友评论

登录后评论
0/500
评论
ilufei2019
+ 关注