###生成器补充:

1.
defGenerateData(batchsize=100):train_x=np.linspace(-1,1,batchsize)###等差数列(一维数组)train_y=2*train_x+np.random.randn(*train_x.shape)*0.3###加入噪声的y=zx(一维数组)##np.random.randn(形状)生成0-1间,包括0但不包括1的随机数yieldtrain_x,train_y##以生成器方式返回训练数据x,y
生成器函数之生成一组数据
2.
defGenerateData(training_epochs,batchsize=100):foriinrange(training_epochs):train_x=np.linspace(-1,1,batchsize)###等差数列(一维数组)train_y=2*train_x+np.random.randn(*train_x.shape)*0.3###加入噪声的y=zx(一维数组)##np.random.randn(形状)生成0-1间,包括0但不包括1的随机数yieldtrain_x,train_y,i##生成training_epochs组数据,每去一次,生成一个,直到生成training_epochs组
生成器函数之生成多组数据

###生成器模拟数据

def GenerateData(batchsize = 100):
    train_x = np.linspace(-1,1,batchsize)                     ###等差数列(一维数组)
    train_y = 2*train_x+np.random.randn(*train_x.shape)*0.3   ###加入噪声的y=zx (一维数组)
    ##np.random.randn(形状)生成0-1间,包括0但不包括1的随机数

    yield train_x,train_y      ##以生成器方式返回  训练数据 x,y

##定义占位符
Xinput = tf.placeholder("float32",(None))
Yinput = tf.placeholder("float32",(None))
##建立会话,获取并输出数据(没有通过计算,直接显示输入数据)
training_epochs = 20                                                             ##定义迭代次数
with tf.Session() as sess:                                                       ##建立会话session
    for epoch in range(training_epochs):                                         ##迭代数据20遍【需要调用training_epochs次生成器函数】
        for x,y in GenerateData():                                               ##通过for循环打印所有节点
            xv,yv = sess.run([Xinput,Yinput],feed_dict = {Xinput:x,Yinput:y})    ###通过静态图注入的方式输入数据

            print(epoch,"| x.shape:",np.shape(xv),"| x[:3]:",xv[:3])             ###取数据的前3个数据进行打印
            print(epoch, "| y.shape:", np.shape(yv), "| y[:3]:", yv[:3])         ###取数据的前3个进行打印
            train_data = list(GenerateData())[0]
            plt.plot(train_data[0],train_data[1],'ro',label='original_data')
            plt.legend() #添加说明
            plt.show()
'''
理解:生成器函数生成一组随机等差数列和对应加有噪声的y,在会话中迭代20次,同时调用20次生成器函数
'''
模拟数据制作内存对象数据集(生成器:1个元素,会话时每次迭代都调用一次生成器函数)

###知识补充

a = [1,2,3,4,]
b = ['a','b','c','d']
print(shuffle(a))
print(shuffle(b))
print(shuffle(a,b))
'''
[2, 4, 3, 1]
['d', 'a', 'c', 'b']
[[3, 2, 1, 4], ['c', 'b', 'a', 'd']] 注意:两个乱序的规则是一致的

'''
shuffle乱序规则
01-14 21:44
查看更多