磨人的妖精,版本带来的伤筋动骨,有发展就有版本升级,自己模块有方法变化、不同模块之间还有相互依赖变化,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能用吗?相关推荐

  1. 蜜糖?砒霜? 区块链真skr磨人小妖精!

    哪里有天才,我是把别人喝咖啡的工夫都用在工作上的.──鲁迅  中国软件网每日精选文集 "大家都在讨论区块链, 但我还是搞不懂它是什么, 和我又有什么关系." 今天各位"吃 ...

  2. 程序员MM的自白:磨人小妖精之安卓碎片化

    2019独角兽企业重金招聘Python工程师标准>>> 文/腾讯优测 章婉霞 除了crash问题,Android平台的碎片化越来越受到移动开发的关注,且不谈支持Android系统的移 ...

  3. 程序媛的自白:磨人小妖精之Android碎片化

    作者简介:章婉霞,腾讯优测高级Android工程师 除了Crash问题,Android平台的碎片化越来越受到移动开发的关注,且不谈支持Android系统的移动设备早已过万款,屏幕.品牌以及传感器等方面 ...

  4. REM,你这磨人的小妖精!

    前言 移动端的崛起,给了我们前端更大的舞台,与此同时,也给我们带来了一系列头疼的问题,移动端适配就是其中之一,目前市面上最常用的方案即是REM适配. 为什么说她是一个磨人的小妖精?因为她确实让人又爱又 ...

  5. 磨人的小妖精 别让我遇到你

    我叫颈椎病,今年有5000多岁了,我的子孙散布在世界各地,每当我看到人类颈背痛苦.上肢无力.手指发麻.下肢乏力.行走艰难.头晕.厌恶.吐逆,乃至视物含糊.心动过速及吞咽艰难的时候我都很开心.因为任何医 ...

  6. 「磨人的小妖精」JavaWeb如何学习?先肝了这套教程

    都说一入Java深似海,从此代码是爱人,但是学习的过程却从来都不轻松. 当下,越来越多的互联网企业,招聘Java工程师时,明确要求需熟练掌握JavaWeb技术.作为衔接前后端的重要一环,JavaWeb ...

  7. 刀在石上磨 人在事上练

    刀在石上磨 人在事上练 转载于:https://www.cnblogs.com/feng9exe/p/10778139.html

  8. 聊聊「游戏」这个磨人的小妖精

    引言:此文是我的「读书会」里一份优秀作业,刘昊男同学作品.对于游戏,我记得之前看过「六原则」,不妨放在开头: 研究不熟悉的东西使之变为熟悉的东西: 将熟悉的东西作有规律的重复: 在重复的过程中尽可能作 ...

  9. theano 这磨人的小妖精

    Theano升级到1.0后,在import theano 时总会出现如下提醒,在没升级之前之前是没有的. >> import theano Using cuDNN version 5110 ...

最新文章

  1. 【双11背后的技术】集团AliDocker化双11总结
  2. Computer:成功解决安装软件时需要系统空间环境辅助程序(比如Microsoft Visual C++2010 x86 Redistributable安装失败)
  3. 几个常用的宏:likely和unlikely __raw_writel
  4. String比较? 用==判断两个字符串,有时为true有时为false
  5. jQuery动画的显示与隐藏效果!
  6. java FileReader/FileWriter读写文件
  7. 第八十四期: Java、Web 和移动程序员学习的 12 个框架
  8. linux 信号_[入门]谈一谈Linux中的信号
  9. spring boot 开源项目汇总
  10. java分布式架构的发展
  11. android人脸建模软件,AI人工智能+面部照片3D建模,3D版捏脸美颜软件羽迹试试成功面世...
  12. 全景图(三):在Unity3D上实现360°球面投影
  13. JS实现经纬度坐标转成XY坐标
  14. CDA-分角色用户查询
  15. 英雄联盟 LPL比赛 直播 视频地址 使用VLC播放
  16. 浅谈矢量场 —— 1. 梯度、散度与拉普拉斯算子
  17. Ubuntu下编译VeraCrypt
  18. 推荐一个界面库:RingSDK
  19. 百度关键词推广选词技巧,你了解多少?
  20. rust前哨站_Rust

热门文章

  1. 社会再生产的核心问题
  2. 如何使用计算机对表数据排序,在Word中怎样给表格的数据排序
  3. 如果美联储加大力度加息,可能会减缓经济增长
  4. linux手写涂鸦代码,canvas实现图片涂鸦功能(附代码)
  5. c语言大小排序算法,七种常见的数组排序算法整理(C语言版本)
  6. IDEA删除 无效的Maven项目
  7. win10批量导入导出windows计划任务的批处理脚本
  8. 移动软件开发 微信小程序 第四次实验
  9. 魔兽世界各个级别任务
  10. 人物皮肤怎么画?怎样才能画好人物皮肤?