tensorflow:损失函数和优化器

tensorflow:损失函数和优化器,第1张

1 损失函数是在graph中定义的经过operation的tensor。

2损失函数最终要带入到优化器的minimize方法中做参数。minimize方法内部包含了compute_gradients和apply_gradients方法。

3 优化器的minimize方法返回的是operation,一般命名为train_step。

4session的run方法的参数,如果是operation,则返回值为None;如果是tensor,则返回值是ndarray。因此sessrun(train_step,feed_dict)无返回结果,只起训练作用。

5Variable定义时必须给出初始值。Variable是变量,其值保存在session中,session的global_variable_initializer实际上是初始值的保存。

人工智能在去年大火过后,Google开源了其机器学习工具Tensorflow,现在Tensorflow支持了移动端,支持的平台包括 Android , iOS , Raspberry Pi 。

但如何添加自己想识别的物体?官方给了 简单的教程 ,但是有很多坑,本文就逐步介绍如何训练自己的,然后在iOS设备上运行。

得到的文件如下:

至此就完成了训练与验证数据的准备工作。

由于内存的限制,为了更好的体验和使用效果,最好降低精度,训练inception_v1模型,但是我比较懒就直接按教程重新训练的inception_v3模型。

这里我用的是教程中的flowers_train,然后将num_classes设为9,因为我的一共9类。同时inception_trainpy记录modelckpt的 *** 作改成每10次记录一次(inception模型比较庞大,我又是单核cpu跑,运行比较耗时,如果按原来的5000次记录一次那么要等大概83小时,才会记录一次)。

设置好,编译flowers_train,运行就可以得到输出的checkpoints了。

运行截图与生成的ckpt:

为了在iOS设备上运行,必须把前面训练的参数写入graph中,生成protobuf格式的文件。

Google提供了freeze_graph,可以直接使用,将运算图和参数写成pb。

这里有4个步骤:

完成上面这些步骤过后就得到可以导入iOS运行的pb文件:

下面是我集合整个流程的一个shell脚本:

由于前面用的是inception_v3模型,所以camera这个demo中某些参数需要改变一下,首先是 const int wanted_input_width 与 const int wanted_input_height ,都要变成299,因为模型输入大小是299299的,其次是采集像素归一化方式,直接除以2550,归一化到[0,1]区间。

运行结果:

以上是第80次迭代参数的预测结果,并不是很理想。但整体流程完成了模型训练与iOS设备运行TF

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9675713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存