tensorflow喂数据进模型小例子
2017-10-15 23:07
357 查看
学习深度学习,个人觉得最基础的应该知道怎么喂数据进模型,数据不可能一次性全部进模型,而是选取一个batch的进入,下面写了个小例子模仿来实现,希望能加深理解:
import numpy as np
x=[[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7]]
y=[[0,1],[1,0],[0,1],[0,1],[0,1],[1,0],[1,0]]
"""
生成批次数据
每个batch为2 ,每次有两条数据去更新模型(当数据总数为奇数的时候,则最后只有一条)
,总共轮训5次,也就是每条数据都有5次机会去更新模型的参数
"""
def batch_iter(data,batch_size=2,num_epochs=5):
data=np.array(data)
data_size=len(data)
num_batchs_per_epchs=int((data_size-1)/batch_size)+1
for epoch in range(num_epochs):
indices=np.random.permutation(np.arange(data_size))
shufflfed_data=data[indices]
for batch_num in range(num_batchs_per_epchs):
start_index=batch_num*batch_size
end_index=min((batch_num + 1) * batch_size, data_size)
yield shufflfed_data[start_index:end_index]
# x=[[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7]]
# y=[[0,1],[1,0],[0,1],[0,1],[0,1],[1,0],[1,0]]
"""
准备需要喂入模型的数据
"""
def feed_data(batch):
x_batch, y_batch = zip(*batch)
feed_dict = {
"input_x": x_batch,
"input_y": y_batch
}
return feed_dict, len(x_batch)
batch_train = batch_iter(list(zip(x, y)))
for i, batch in enumerate(batch_train):
feed_dict, _ = feed_data(batch)
print(i,"--->",feed_dict)
0 ---> {'input_x': (array([1, 5]), array([1, 2])), 'input_y': (array([0, 1]), array([1, 0]))}
1 ---> {'input_x': (array([1, 1]), array([1, 4])), 'input_y': (array([0, 1]), array([0, 1]))}
2 ---> {'input_x': (array([1, 3]), array([1, 7])), 'input_y': (array([0, 1]), array([1, 0]))}
3 ---> {'input_x': (array([1, 6]),), 'input_y': (array([1, 0]),)}
4 ---> {'input_x': (array([1, 1]), array([1, 6])), 'input_y': (array([0, 1]), array([1, 0]))}
5 ---> {'input_x': (array([1, 2]), array([1, 4])), 'input_y': (array([1, 0]), array([0, 1]))}
6 ---> {'input_x': (array([1, 7]), array([1, 3])), 'input_y': (array([1, 0]), array([0, 1]))}
7 ---> {'input_x': (array([1, 5]),), 'input_y': (array([0, 1]),)}
8 ---> {'input_x': (array([1, 6]), array([1, 2])), 'input_y': (array([1, 0]), array([1, 0]))}
9 ---> {'input_x': (array([1, 1]), array([1, 7])), 'input_y': (array([0, 1]), array([1, 0]))}
10 ---> {'input_x': (array([1, 4]), array([1, 3])), 'input_y': (array([0, 1]), array([0, 1]))}
11 ---> {'input_x': (array([1, 5]),), 'input_y': (array([0, 1]),)}
12 ---> {'input_x': (array([1, 5]), array([1, 3])), 'input_y': (array([0, 1]), array([0, 1]))}
13 ---> {'input_x': (array([1, 6]), array([1, 1])), 'input_y': (array([1, 0]), array([0, 1]))}
14 ---> {'input_x': (array([1, 2]), array([1, 7])), 'input_y': (array([1, 0]), array([1, 0]))}
15 ---> {'input_x': (array([1, 4]),), 'input_y': (array([0, 1]),)}
16 ---> {'input_x': (array([1, 1]), array([1, 2])), 'input_y': (array([0, 1]), array([1, 0]))}
17 ---> {'input_x': (array([1, 3]), array([1, 5])), 'input_y': (array([0, 1]), array([0, 1]))}
18 ---> {'input_x': (array([1, 6]), array([1, 4])), 'input_y': (array([1, 0]), array([0, 1]))}
19 ---> {'input_x': (array([1, 7]),), 'input_y': (array([1, 0]),)}
可以看到总共echo为5次,每次echo分为4次把数据遍历万,函数设置每个batch为2,数据总共个数为7,西能能加深对数据学习深度学习input数据的理解。
相关文章推荐
- 在TensorFlow上使用LeNet-5模型识别MNIST数据
- 三个例子,让你看懂数据仓库多维数据模型的设计
- Tensorflow学习笔记:用minst数据集训练卷积神经网络并用训练后的模型测试自己的BMP图片
- 三个例子,让你看懂数据仓库多维数据模型的设计
- tensorflow保存模型与恢复数据
- Tensorflow学习教程------读取数据、建立网络、训练模型,小巧而完整的代码示例
- TensorFlow数据模型--张量
- tensorflow学习(3):解读mnist_experts例子,训练保存模型并tensorboard可视化
- 三个例子,让你看懂数据仓库多维数据模型的设计
- TensorFlow——训练自己的数据(二)模型设计
- 第三课:把tensorflow,模型和测试数据导入Android工程
- 利用tensorflow训练自己的图片数据(3)——建立网络模型
- tf.nn.pool()使用例子:TensorFlow对一维数据进行池化
- Tensorflow快速入门3–代码结构及模型例子
- Tensorflow学习笔记:模型训练数据的保存和恢复的简单实例
- Django小例子 – 模型数据的模板呈现
- tensorflow中的seq2seq例子为什么需要bucket? 有关tensorflow 的sequence2sequence例子,为什么需要用到buckets,rnn不是可以处理任意长度的数据吗
- TensorFlow数据模型——张量
- TensorFlow——训练自己的数据(四)模型测试
- tensorflow学习-示例1(MNIST数据集合上的softmax分类模型)