首页 文章 精选 留言 我的

精选列表

搜索[学习],共10000篇文章
优秀的个人博客,低调大师

【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第11章 训练深层神经网络(上)

第 10 章介绍了人工神经网络,并训练了我们的第一个深度神经网络。 但它是一个非常浅的 DNN,只有两个隐藏层。 如果你需要解决非常复杂的问题,例如检测高分辨率图像中的数百种类型的对象,该怎么办? 你可能需要训练更深的 DNN,也许有 10 层,每层包含数百个神经元,通过数十万个连接来连接。 这不会是闲庭信步: 首先,你将面临棘手的梯度消失问题(或相关的梯度爆炸问题),这会影响深度神经网络,并使较低层难以训练。 其次,对于如此庞大的网络,训练将非常缓慢。 第三,具有数百万参数的模型将会有严重的过拟合训练集的风险。 在本章中,我们将依次讨论这些问题,并提出解决问题的技巧。 我们将从解释梯度消失问题开始,并探讨解决这个问题的一些最流行的解决方案。 接下来我们将看看各种优化器,与普通梯度下降相比,它们可以加速大型模型的训练。 最后,我们将浏览一

优秀的个人博客,低调大师

【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第11章 训练深层神经网络(下)

训练稀疏模型 所有刚刚提出的优化算法都会产生密集的模型,这意味着大多数参数都是非零的。 如果你在运行时需要一个非常快速的模型,或者如果你需要它占用较少的内存,你可能更喜欢用一个稀疏模型来代替。 实现这一点的一个微不足道的方法是像平常一样训练模型,然后摆脱微小的权重(将它们设置为 0)。 另一个选择是在训练过程中应用强 l1 正则化,因为它会推动优化器尽可能多地消除权重(如第 4 章关于 Lasso 回归的讨论)。 但是,在某些情况下,这些技术可能仍然不足。 最后一个选择是应用双重平均,通常称为遵循正则化领导者(FTRL),一种由尤里·涅斯捷罗夫(Yurii Nesterov)提出的技术。 当与 l1 正则化一起使用时,这种技术通常导致非常稀疏的模型。 TensorFlow 在FTRLOptimizer类中实现称为 FTRL-Proxima

优秀的个人博客,低调大师

【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第11章 训练深层神经网络(中)

梯度裁剪 减少梯度爆炸问题的一种常用技术是在反向传播过程中简单地剪切梯度,使它们不超过某个阈值(这对于递归神经网络是非常有用的;参见第 14 章)。 这就是所谓的梯度裁剪。一般来说,人们更喜欢批量标准化,但了解梯度裁剪以及如何实现它仍然是有用的。 在 TensorFlow 中,优化器的minimize()函数负责计算梯度并应用它们,所以您必须首先调用优化器的compute_gradients()方法,然后使用clip_by_value()函数创建一个裁剪梯度的操作,最后 创建一个操作来使用优化器的apply_gradients()方法应用裁剪梯度: threshold = 1.0 optimizer = tf.train.GradientDescentOptimizer(learning_rate) grads_and_vars = op

优秀的个人博客,低调大师

Java 学习(26)---(IO流之Properties 类 / 合并流 / 序列化流 / 随机访问流)

Properties (1)是一个集合类, Hashtable的子类 (2)特有功能 A:public Object setProperty(Stringkey,Stringvalue) ; //添加元素 B:public StringgetProperty(Stringkey) ; //根据键获取元素 C:publicSet<String> stringPropertyNames() ; //获取所有的键的集合 (3)和 IO 流结合的方法 把键值对形式的文本文件内容加载到集合中 public void load(Reader reader) public void load(InputStream inStream) 把集合中的数据存储到文本文件中 public void store(Writer writer,String comments) public void store(OutputStream out,String comments) (4)案例: A:根据给定的文件判断是否有键为 "lisi"的,如果有就修改其值为 100 // 把文件中的数据加载到集合中 Properties prop = new Properties(); Reader r = new FileReader( "user.txt" ); prop.load(r); r.close(); // 遍历集合,获取得到每一个键 Set<String> set = prop.stringPropertyNames(); for (String key : set) { //判断键是否有为 "lisi" 的,如果有就修改其值为 "100" if ( "lisi" .equals(key)) { prop .setProperty( key ,"100"); break ; } } // 把集合中的数据重新存储到文件中 Writer w = new FileWriter( "user.txt"); prop.store(w,null); w.close(); 合并流 (理解即可) (1)把多个输入流的数据写到一个输出流中。 (2)构造方法: A:SequenceInputStream(InputStream s1, InputStream s2) B:SequenceInputStream(Enumeration<? extends InputStream> e) // 需求:把下面的三个文件的内容复制到 Copy.java 中 // ByteArrayStreamDemo.java,CopyFileDemo.java,DataStreamDemo.java // SequenceInputStream(Enumeration e) // 通过简单的回顾我们知道了 Enumeration 是Vector 中的一个方法的返回值类型。 // Enumeration<E> elements() Vector<InputStream> v= newVector<InputStream>(); InputStream s1 = new FileInputStream( "ByteArrayStreamDemo.java" InputStream s2 = new FileInputStream( "CopyFileDemo.java" ); InputStream s3 = new FileInputStream( "DataStreamDemo.java" ); v.add(s1); v.add(s2); v.add(s3); Enumeration<InputStream>en =v .elements(); SequenceInputStream sis =new SequenceInputStream(en ); // 或 SequenceInputStream sis = new SequenceInputStream(s1,s2,s3); BufferedOutputStream bos =new BufferedOutputStream( new FileOutputStream("Copy.java")); // 如何写读写呢,其实很简单,你就按照以前怎么读写,现在还是怎么读写 byte [] bys = newbyte [1024]; int len = 0; while ((len = sis.read(bys)) != -1) { bos .write( bys , 0, len ); } bos.close(); sis.close(); 序列化流 (理解) (1)可以把对象写入文本文件或者在网络中传输 (2)如何实现序列化呢 ? 让被序列化的对象所属类实现序列化接口。 java.io.Serializable:该接口是一个标记接口。没有功能需要实现。 NotSerializableException: 未序列化异常 类通过实现java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口。 java.io.InvalidClassException: cn.itcast_07.Person; local class incompatible: stream classdesc serialVersionUID = -2071565876962058344, local class serialVersionUID = -8345153069362641443 为什么会有问题呢 ? Person类实现了序列化接口,那么它本身也应该有一个标记值。 这个标记值假设是 100。开始的时候: Person.class --id=100 wirte数据: oos.txt --id=100 read数据 : oos.txt-- id=100 现在: Person.class --id=200 wirte数据: oos.txt --id=100 read数据 : oos.txt-- id=100 (3)注意问题: 把数据写到文件后,在去修改类会产生一个问题。如何解决该问题呢 ? 在类文件中,给出一个固定的序列化 id值。而且,这样也可以解决黄色警告线问题 private staticvoid read() throws IOException, ClassNotFoundException { // 创建反序列化对象 ObjectInputStream ois = new ObjectInputStream( new FileInputStream( "oos.txt" )); // 还原对象 Object obj = ois.readObject(); // 释放资源 ois.close(); // 输出对象 System. out .println(obj); } privatestaticvoid write() throws IOException { // 创建序列化流对象 ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream( "oos.txt" )); // 创建对象 Person p = new Person( " 林青霞 " , 27); // public final void writeObject(Object obj) oos.writeObject(p); // 释放资源 oos.close(); } 什么是序列化 ? 答:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 --流数据(ObjectOutputStream) 什么是反序列化 ? 答:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。 流数据-- 对象 (ObjectInputStream) 随机访问流 RandomAccessFile类不属于流,是 Object类的子类。但它融合了 InputStream 和OutputStream 的功能。支持对文件的随机访问读取和写入。 public RandomAccessFile(Stringname,Stringmode) : 第一个参数是文件路径,第二个参数是操作文件的模式。 模式有四种,我们最常用的一种叫 "rw",这种方式表示我既可以写数据,也可以读取数据 private staticvoid read() throws IOException { // 创建随机访问流对象 RandomAccessFile raf = newRandomAccessFile("raf.txt" ,"rw"); int i = raf.readInt(); System. out .println(i); // 该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。 System. out .println(" 当前文件的指针位置是: " + raf.getFilePointer()); char ch = raf.readChar(); System. out .println(ch); System. out .println(" 当前文件的指针位置是:" + raf.getFilePointer()); String s = raf.readUTF(); System. out .println(s); System. out .println( " 当前文件的指针位置是: " + raf.getFilePointer()); // 我不想重头开始了,我就要读取 a,怎么办呢 ? raf.seek(4); ch = raf.readChar(); System. out .println(ch); } privatestaticvoid write() throws IOException { // 创建随机访问流对象 RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw" ); // 怎么玩呢 ? raf.writeInt(100); raf.writeChar('a'); raf.writeUTF("中国"); raf.close(); }

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册