zoukankan      html  css  js  c++  java
  • 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)}
    '''
  • 相关阅读:
    【WebTerminal】gotty工具
    【Java】15分钟快速体验阿里Java诊断工具Arthas
    【K8S】helm chart多环境部署最佳实践-示例
    mysql-linux定时备份mysql数据库
    Mockito-简单使用使用
    EasyMock 简单使用
    SpringDataJpa学习
    js-重写jquery的ajax中的内容
    shiro-过滤器
    hadoop ha 读取 activce状态的活动节点
  • 原文地址:https://www.cnblogs.com/liuhuacai/p/11734589.html
Copyright © 2011-2022 走看看