python3 -tensorflow-dataset 之map函数 lambda隐函数的应用
阅读原文时间:2023年07月16日阅读:1

###隐函数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)}
'''