github 上 tensorflow 一个简单项目,新手有点不太懂

2017-04-24 11:49:03 +08:00
 alwayshere

https://github.com/anhad13/DeepAestheticLearning

对 TF 入门有一点点模糊的概念,因为看文档教程实在乏味又晦涩,想在 github 上找个简单项目找到大致的感觉明确方向再入门,然后找到了这么一个简单的项目,目前就是有两点不太懂:

  1. 这里面的 build_model.py 中, no_of_epochs 指的是什么?假如我训练样本图片有 25 万张,这个 no_of_epochs 该取值多少?
  2. tensorflow 是否有“缓存”这一概念,这个项目中,作为 phper 大致看了下 Python 代码,每次测试一张图片貌似都要训练一次样本集,如果图片太多比如几十万张的情况下,是否也太慢了,可否训练一次几十万张图片样本,然后“缓存”下来,用缓存的结果去测试一张图片,这样的话,代码上该怎样实现 求 V2er 解疑释惑,不胜感激
3357 次点击
所在节点    程序员
6 条回复
enenaaa
2017-04-24 12:05:47 +08:00
1 、 no_of_epochs 是训练次数,在准确率收敛前增加次数能提高准确率。

2 、这个问法有点让我有点愣住。 每次训练,信息都会“保存”在神经网络的参数里, 训练好之后就可以直接测试了。
这个“保存”说得不确切, 大体上网络参数会根据输入图片和预设答案不断调整,参看“反向传播算法”。
alwayshere
2017-04-24 12:16:09 +08:00
@enenaaa 谢谢,如果是 25 万张图片,建议 no_of_epochs 该具体量化成多少呢?我说的“缓存”是指缓存在硬盘上,这个 build_model.py 中,每次调用 predict 都要先“ load_training_set ”一次,也就是说先要跑一次所有图片样本集,这样做是否会消耗大量时间?新手幼稚问题哈,希望不要被贻笑大方
954880786
2017-04-24 12:17:48 +08:00
1. 可以这么理解 epoch 数是指把整个训练样本训练几遍,由于目前基本都使用 sgd 算法,每次训练只会从样本中取一个小部分作为一个 batch 进行训练。 epoch 数越高一般模型表现会越好,但过多也没有什么意义。

建议楼主可以学习 cs229 和 cs231n 普及一下基本概念。
Xs0ul
2017-04-24 12:19:11 +08:00
1. no_of_epochs 是 number of epochs ,一般把整个训练集循环一遍叫一个 epoch 。
2. “每次测试一张图片貌似都要训练一次样本集”,模型就是要靠比较每一次的测试结果和真实结果来训练的,所以不存在先训练再测试的说法。

这两个问题,倒其实不算是 deep learning 的内容。楼主可以看看 gradient descend/梯度下降法 以及修改版 SGD/随机梯度下降法、 minibatch GD/批量梯度下降。

不过讲道理,入门 deep learning ,不自己推导反向传播公式之类的倒是无所谓。但是啥理论也不想看,就想直接看懂代码做了什么。。那可能想多了
princelai
2017-04-24 12:26:55 +08:00
保存到本地是 tf.train.saver 吧,其实就是把参数保存起来, epoch 设置为多少要看模型,简单的几百次就收敛了,复杂的可能要几万次吧
enenaaa
2017-04-24 13:01:26 +08:00
@alwayshere
训练次数看结果什么时候收敛,不同的模型不一样。训练次数、学习率、规范化参数怎么设置,怎么优化就需要了解下理论了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356929

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX