“人造太阳”计划

tensorflow数据集加载

自作多情 提交于 2020-01-26 20:08:55
本篇涉及的内容主要有小型常用的经典数据集的加载步骤,tensorflow提供了如下接口:keras.datasets、tf.data.Dataset.from_tensor_slices(shuffle、map、batch、repeat),涉及的数据集如下:boston housing、mnist/fashion mnist、cifar10/100、imdb 1.keras.datasets 通过该接口可以直接下载指定数据集。boston housing提供了和房价有关的一些因子(面积、居民来源等),mnist提供了手写数字的图片和对应label,fashion mnist提供了10种衣服的灰度图和对应label,cifar10/100是用来进行简单图像识别的数据集,分别包含10类物品和100类物品,imdb是一个类似于淘宝好评的数据集,即通过评语及其标注(好评或差评),来实现一个好评或差评的分类器。 注:通过该接口得到的数据集格式为numpy格式。 2.tf.data.Dataset.from_tensor_slices() 该方法可以用来进行数据的迭代,过程中可以直接将numpy格式转化为tensor格式,然后通过调用next(iter())方法实现迭代,使用示例如下: # 加载数据集 (x,y),(x_test,y_test) = keras.datasets.mnist

day13迭代器与生成器

亡梦爱人 提交于 2020-01-26 19:37:22
三个作业: # 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码 login_dic = {'alex':False} def login(func): def inner(*args,**kwargs): if not login_dic['alex']: usrname = input('用户名 : ') passwd = input('密 码 : ') with open('userinfo') as f: for line in f: line = line.strip() usr,pwd = line.split(' ') if usrname.strip() == usr and passwd.strip() == pwd: print('登陆成功') login_dic[usrname] = True if login_dic['alex']: ret = func(*args,**kwargs) return ret return inner @login def home(): print('欢迎来到home页') # home() # home() # home() # 2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件 def log(func):

redis 5.0.7 源码阅读——双向链表

戏子无情 提交于 2020-01-25 19:35:35
redis中动态字符串sds相关的文件为:adlist.h与adlist.c 一、数据结构 redis里定义的双向链表,与普通双向链表大致相同 单个节点: 1 typedef struct listNode { 2 struct listNode *prev; 3 struct listNode *next; 4 void *value; 5 } listNode; 链表: 1 typedef struct list { 2 listNode *head; 3 listNode *tail; 4 void *(*dup)(void *ptr); 5 void (*free)(void *ptr); 6 int (*match)(void *ptr, void *key); 7 unsigned long len; 8 } list; 链表以函数指针的方式,实现了复制、销毁与比较的方法的多态。 迭代器: 1 typedef struct listIter { 2 listNode *next; 3 int direction; 4 } listIter; 迭代器中有个成员变量direction,用于表示当前遍历的方向。 大致结构: 1 /* 2 +-------------------+ +----------------> +--------------+ <-------+ 3

C++erase()

女生的网名这么多〃 提交于 2020-01-25 03:13:56
偶然发现了当vecotr在erase最后一个iter之后,仍然可以++代表一个值,而不为空。 vector<int> nums={3,2,3,4}; int val=3; auto iter=nums.begin(); while(*iter){ if(*iter==val) nums.erase(iter); else iter++; } 将while的条件修改为iter!=nums.end()即可。 erase(iter) 当erase的参数是一个迭代器的时候,函数返回的是欲删除元素之后的元素的迭代器;当参数是指向最后一个元素的迭代器时,返回的是.end() vector<int> nums={3,2,3,4}; auto iter=nums.begin()+1; nums.erase(iter); cout<<*iter<<endl; cout<<*(nums.begin()+1)<<endl; cout<<*(nums.begin()+2)<<endl; cout<<*(nums.begin()+3)<<endl; if((nums.begin()+3)==nums.end()) cout<<"1"<<endl; cout<<nums.size()<<endl; //再次删除 cout<<"再次删除"<<endl; nums.erase(iter); cout<<*iter

python中迭代器的原理与使用

北城余情 提交于 2020-01-25 01:14:29
python中,一个类只要实现了 __iter__() 方法,则称其为可迭代的,如果其又实现了 next() 方法(在python3中为__next__()方法,本文中不再进行说明),则可称其为迭代器。其中, __iter()__ 方法的用途是返回一个迭代器,并通过返回的迭代器的 next() 来迭代所需的容器。 迭代器的用处,主要是用来遍历一个我们需要的容器,如我们常见的for in循环,通过对于我们自己写的类添加迭代的方法,便可以使得我们的自定义的类可以像内置的列表一样,方便地通过for in来直接遍历。 以下是一个比较简单的迭代器的使用方法。 首先,假设我们有一个类 MyArray ,其中有一个字符串的列表 self.elements class MyArray ( object ) : def __init__ ( self ) : self . elements = [ "e1" , "e2" , "e3" ] self . len = len ( self . elements ) 这时,我们知道,我们是无法直接遍历 MyArray 的,只能通过访问其中的元素来实现。这时,我们可以通过一种简单的方法来使得 MyArray 变成一个可迭代的类。 class MyArray ( object ) : def __init__ ( self ) : self .

python 使用魔术方法__iter__创建可迭代对象

时光怂恿深爱的人放手 提交于 2020-01-24 19:04:48
如果想要创建可迭代对象,在类中定义__iter__方法, iter内部返回一个迭代器(生成器也是一种特殊迭代器)变成类似像list对象那样的可迭代对象 class Foo ( object ) : def __init__ ( self , name , age ) : self . name = name self . age = age def func ( self ) : pass def __iter__ ( self ) : # return iter([11,22,33,44,55,66]) yield 11 yield 22 yield 33 # obj1是Foo类的一个对象,可迭代对象 obj1 = Foo ( 'Tom' , 98 ) for item in obj1 : print ( item ) 来源: CSDN 作者: ROOOOOOM 链接: https://blog.csdn.net/qq_41228218/article/details/104081061

python手写实现进度条

喜夏-厌秋 提交于 2020-01-24 13:41:49
哈哈哈,我们平时都经常见到python的进度条,安装pip包的时候,更新的时候,调用第三方库的时候,,,但是很少有人试过自己实现,今天来了兴趣就自己写一套哈哈哈 进度条的输出是在原地刷新的,所以用到输出的‘\r’和time库的sleep(),‘\r’即“换行,光标在上一行”。这里提供两种方法: ————使用print() for i in range(0,101,2): print('\r----->>',i, '<<-----',end = "", flush=True)  time.sleep(0.1) ————使用sys.stdout.write() import sys_out = sys.stdoutfor i in range(0,101,2):  _out.write('\r'+'-->>'+str(i)+'<<--')  time.sleep(0.1) 接下来我们提升点难度,把百分比进度条图形加上, c = '#'p = '_'for iter in range(0,101,2): prc = c* iter + p *(100-iter) print('\r',prc,'-->>' ,iter, '<<--', end='', flush=True) time.sleep(0.05) 来源: https://www.cnblogs.com/dynmi/p

map映射

两盒软妹~` 提交于 2020-01-23 11:01:59
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的 >对于迭代器来说, 可以修改实值,而不能修改key < 根据key值快速查找记录,查找的复杂度基本是Log(N) ,如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。 1、头文件:#include<map> 2、定义:例如: map< int, string> personnel; 3、数据插入: A、用insert函数插入pair数据//只能创建但不能覆盖已存在的key所对应的value 1 map<int, string> mapStudent; 2 3 mapStudent.insert(pair<int, string>(1, "student_one")); 4 5 mapStudent.insert(pair<int, string>(2, "student_two")); 6 7 mapStudent.insert(pair<int, string>(3,

Python之路----迭代器与生成器

倾然丶 夕夏残阳落幕 提交于 2020-01-23 08:49:59
一、迭代器 L=[1,,2,3,4,5,]   取值:索引、循环for   循环for的取值:list列表 dic字典 str字符串 tuple元组 set f=open()句柄 range() enumerate枚举   for i in L: 告诉我列表所拥有的所有方法 print(dir[]) 判断某一数据类型是否有__iter__方法(是否可迭代) print('__iter__' in dir(int)) print('__iter__' in dir(bool)) print('__iter__' in dir(list)) print('__iter__' in dir(dict)) print('__iter__' in dir(set)) print('__iter__' in dir(tuple)) print('__iter__' in dir(enumerate([]))) print('__iter__' in dir(range(1))) 只要能被for循环的数据类型,都有_iter_方法 print([].__iter__()) 一个列表执行了__iter__()之后的返回值就是一个迭代器 print(dir([])) print(dir([].__iter__())) print(set(dir([].__iter__())) - set(dir([

迭代器生成器

风流意气都作罢 提交于 2020-01-21 16:13:08
迭代器 迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代 while True: msg = input('>>: ').strip() print(msg) # 仅仅是单纯的循环,没有迭代,不是迭代器 下述while循环才是一个迭代过程,不仅满足重复,而且以每次重新赋值后的index值作为下一次循环中新的索引进行取值,反复迭代,最终可以取尽列表中的值 goods=['mac','lenovo','acer','dell','sony'] index=0 while index < len(goods): print(goods[index]) index+=1 为什么要有迭代器 对于序列类型:字符串、列表、元组,我们可以使用索引的方式迭代取出其包含的元素。但对于字典、集合、文件等类型是没有索引的,若还想取出其内部包含的元素,则必须找出一种不依赖于索引的迭代方式,这就是迭代器 可迭代对象 要想了解迭代器为何物,必须事先搞清楚一个很重要的概念:可迭代对象(Iterable)。 从语法形式上讲,内置有__iter__方法的对象都是可迭代对象,字符串、列表、元组、字典、集合、打开的文件都是可迭代对象: 'hello'.__iter__ (1