Tensflow版本升级就是磨人的妖精——regular能用吗?
磨人的妖精,版本带来的伤筋动骨,有发展就有版本升级,自己模块有方法变化、不同模块之间还有相互依赖变化,coding中有1/3的时间都是在解决版本升级后新特性学习问题解决,1/3是在debug,真正写核心函数也就最多1/3的时间了。
Tensonflow2.0相对1.0的升级,兼容性是个大坑,见文章大型翻车现场,真有一种强烈的忽悠感。这里记录一些神奇的解决方案:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
就算是1.x里面,不同版本下,方法也有很大变化,比如书本上的tf.contrib.layers.l1_regularizer(),就没有了没有了,这个可是最基础最常用的范数函数,一定藏在了某个函数里。
我们先看看自己的tensorflow是什么版本:
bogon:~ ur_acount$ python
Python 2.7.10 (default, Feb 22 2019, 21:55:15)
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import tensorflow as tf
dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin_x86_64/_U_S_Stensorflow_Spython_C_Upywrap_Utensorflow_Uinternal.so___Utensorflow in /Library/Python/2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path
>>>
>>> tf.__version__
'1.4.0'
>>> tf.__path__
['/Library/Python/2.7/site-packages/tensorflow']
原来我用的是号称谷歌的第二代机器学习系统,TensorFlow 1.4.0 发布了,按照谷歌所说,在某些基准测试中,TensorFlow 的表现比第一代的 DistBelief 快了2倍。更多该版本的改变见:https://github.com/tensorflow/tensorflow/releases/tag/v1.4.0
但是我依然没有找到正则化的方法,实在没有招的话,试试nn.l2_loss 但是nn.l1_loss是不支持的,不知网上那些使用layers的还能跑起来不。千辛万苦,终于找到可能替代能用的函数,tf.norm(), 简单而美丽。
import tensorflow as tf
from numpy.random import RandomState# test the usage of regularizer
w = tf.constant([[1.0, -2.0], [-3.0, 4.0]])
r1 = tf.norm(w, 1)
r2 = tf.norm(w,2)
reg2 = tf.nn.l2_loss(w)
# reg1 = tf.contrib.layers.l1_reguarlizer(0.5)(w)
# reg2 = tf.contrib.layers.l2_regularizer(0.5)(w)with tf.Session() as sess:print sess.run(w)print sess.run(r1)print sess.run(r2)print sess.run(reg2)
执行结果:
compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
[[ 1. -2.][-3. 4.]]
10.0
5.477226
15.0
[Finished in 1.3s]
而书本上标准答案,对于一范数是10,二范数是:15。但是为啥tf.norm(w, 2) 算出来是5.477这么诡异的数值呢?今天中午就到这里吧,有两个能用的就好,以后在研究norm函数,欧式距离算出来怎么这么诡异。
Tensflow版本升级就是磨人的妖精——regular能用吗?相关推荐
- 蜜糖?砒霜? 区块链真skr磨人小妖精!
哪里有天才,我是把别人喝咖啡的工夫都用在工作上的.──鲁迅 中国软件网每日精选文集 "大家都在讨论区块链, 但我还是搞不懂它是什么, 和我又有什么关系." 今天各位"吃 ...
- 程序员MM的自白:磨人小妖精之安卓碎片化
2019独角兽企业重金招聘Python工程师标准>>> 文/腾讯优测 章婉霞 除了crash问题,Android平台的碎片化越来越受到移动开发的关注,且不谈支持Android系统的移 ...
- 程序媛的自白:磨人小妖精之Android碎片化
作者简介:章婉霞,腾讯优测高级Android工程师 除了Crash问题,Android平台的碎片化越来越受到移动开发的关注,且不谈支持Android系统的移动设备早已过万款,屏幕.品牌以及传感器等方面 ...
- REM,你这磨人的小妖精!
前言 移动端的崛起,给了我们前端更大的舞台,与此同时,也给我们带来了一系列头疼的问题,移动端适配就是其中之一,目前市面上最常用的方案即是REM适配. 为什么说她是一个磨人的小妖精?因为她确实让人又爱又 ...
- 磨人的小妖精 别让我遇到你
我叫颈椎病,今年有5000多岁了,我的子孙散布在世界各地,每当我看到人类颈背痛苦.上肢无力.手指发麻.下肢乏力.行走艰难.头晕.厌恶.吐逆,乃至视物含糊.心动过速及吞咽艰难的时候我都很开心.因为任何医 ...
- 「磨人的小妖精」JavaWeb如何学习?先肝了这套教程
都说一入Java深似海,从此代码是爱人,但是学习的过程却从来都不轻松. 当下,越来越多的互联网企业,招聘Java工程师时,明确要求需熟练掌握JavaWeb技术.作为衔接前后端的重要一环,JavaWeb ...
- 刀在石上磨 人在事上练
刀在石上磨 人在事上练 转载于:https://www.cnblogs.com/feng9exe/p/10778139.html
- 聊聊「游戏」这个磨人的小妖精
引言:此文是我的「读书会」里一份优秀作业,刘昊男同学作品.对于游戏,我记得之前看过「六原则」,不妨放在开头: 研究不熟悉的东西使之变为熟悉的东西: 将熟悉的东西作有规律的重复: 在重复的过程中尽可能作 ...
- theano 这磨人的小妖精
Theano升级到1.0后,在import theano 时总会出现如下提醒,在没升级之前之前是没有的. >> import theano Using cuDNN version 5110 ...
最新文章
- 【双11背后的技术】集团AliDocker化双11总结
- Computer:成功解决安装软件时需要系统空间环境辅助程序(比如Microsoft Visual C++2010 x86 Redistributable安装失败)
- 几个常用的宏:likely和unlikely __raw_writel
- String比较? 用==判断两个字符串,有时为true有时为false
- jQuery动画的显示与隐藏效果!
- java FileReader/FileWriter读写文件
- 第八十四期: Java、Web 和移动程序员学习的 12 个框架
- linux 信号_[入门]谈一谈Linux中的信号
- spring boot 开源项目汇总
- java分布式架构的发展
- android人脸建模软件,AI人工智能+面部照片3D建模,3D版捏脸美颜软件羽迹试试成功面世...
- 全景图(三):在Unity3D上实现360°球面投影
- JS实现经纬度坐标转成XY坐标
- CDA-分角色用户查询
- 英雄联盟 LPL比赛 直播 视频地址 使用VLC播放
- 浅谈矢量场 —— 1. 梯度、散度与拉普拉斯算子
- Ubuntu下编译VeraCrypt
- 推荐一个界面库:RingSDK
- 百度关键词推广选词技巧,你了解多少?
- rust前哨站_Rust