python3 -tensorflow-dataset 之map函数 lambda隐函数的应用

###隐函数lanbda及map函数的应用实例
'''
lambda 参数1,参数2,参数3,...:表达式
'''
f = lambda x,y :x+y
print(f(1,2))    ###输出3
'''
map()接收一个函数f 和 一个Iterator(可迭代对象),并通过把函数f依次作用在Iterator的每一个元素上,并把结果做为新的Iterator返回
'''
a = [1,2,3]
b = map(lambda x:x*x ,a)
print(list(b))    ###输出[1,4,9]


##map 函数处理字典
c = {
    'x':np.array([1,2,3]),
    'y':[4,5,6]
}
##调用字典的key
d = map(lambda data:data*2,c)
print(list(d))  ##['xx', 'yy']
##调用字典的values
e = map(lambda data:data*2,c.values())
print(list(e))  ##[array([2, 4, 6]), [4, 5, 6, 4, 5, 6]]  ##注意:列表*2重复一次,数组*2元素数字*2

def double(x):
    return x*2
print(list(map(double,c)))  ## ['xx', 'yy']
print(list(map(double,c.values())))  ##[array([2, 4, 6]), [4, 5, 6, 4, 5, 6]]
map函数和lambda函数
import tensorflow as tf
import numpy as np
##定义两个数组
x = np.arange(6)
y = np.arange(3,9)
##创建dataset数据集
dataset = tf.data.Dataset.from_tensor_slices({
    'x':x,
    'y':y
})
c = tf.data.Dataset.range(1,7)
def getone(dataset):
    iterator = dataset.make_one_shot_iterator()  #生成一个迭代器
    one_element = iterator.get_next()            #迭代器取值
    return one_element
one_element1 = getone(dataset)
one_element2 = getone(c)

#定义一个会话内调用的函数
def sess_get_one(one_element):
    for i in range(6):
        datav = sess.run(one_element)
        print(datav)
#开启会话,调取数据
with tf.Session() as sess:
    sess_get_one(one_element1)
    sess_get_one(one_element2)

'''
{'x': 0, 'y': 3}
{'x': 1, 'y': 4}
{'x': 2, 'y': 5}
{'x': 3, 'y': 6}
{'x': 4, 'y': 7}
{'x': 5, 'y': 8}
1
2
3
4
5
6
'''
字典类型的dataset数据集
import tensorflow as tf
import numpy as np
##定义两个数组
x = np.arange(6)
y = np.arange(3,9)
##创建dataset数据集
dataset = tf.data.Dataset.from_tensor_slices({
    'x':x,
    'y':y
})
dataset1 = dataset.map(lambda data:(data['x']*2,tf.cast(data['y'],tf.float32)))
c = tf.data.Dataset.range(1,7)
def getone(dataset):
    iterator = dataset.make_one_shot_iterator()  #生成一个迭代器
    one_element = iterator.get_next()            #迭代器取值
    return one_element
one_element1 = getone(dataset)
one_element2 = getone(c)
one_element3 = getone(dataset1)

#定义一个会话内调用的函数
def sess_get_one(one_element):
    for i in range(6):
        datav = sess.run(one_element)
        print(datav)
#开启会话,调取数据
with tf.Session() as sess:
    sess_get_one(one_element1)
    sess_get_one(one_element2)
    sess_get_one(one_element3)
'''
{'x': 0, 'y': 3}
{'x': 1, 'y': 4}
{'x': 2, 'y': 5}
{'x': 3, 'y': 6}
{'x': 4, 'y': 7}
{'x': 5, 'y': 8}
字典类型的dataset数据集,每取一个值都带着key

1
2
3
4
5
6
(0, 3.0)
(2, 4.0)
(4, 5.0)
(6, 6.0)
(8, 7.0)
(10, 8.0)
相当于数据变成了:{(0, 3.0),(2, 4.0),(4, 5.0),(6, 6.0),(8, 7.0),(10, 8.0)}
'''
原文地址:https://www.cnblogs.com/liuhuacai/p/11734589.html