lambda层保存模型出错

介绍

简短的帖子,描述了如何将Java lambda持久化到文件中以在不同的过程中重复使用。

序列化Lambda

Java 8中引入的Lambda使函数成为Java语言的一等公民(几乎)。 他们不需要专门的类来保存函数。 但是,这是如何进行的呢?

实际上,javac劫持了包含函数的类,并添加了包含函数实现的静态方法。 函数调用站点被新添加的静态方法的调用替换。 有关lambda实现魔术的完整说明,请参见
文章 。

Oracle很有帮助地提供了SerializableLambda类,该类实现了lambda的可序列化形式,提供了足够的元信息来重建调用。 我们要做的就是将lambda转换为可序列化的,然后使用标准的标准机械来封送lambda。 以下是一些实用程序函数,用于对lambda进行序列化和反序列化。

public static <F extends Function & Serializable> void serialise(F f, String name) throws Exception {try (var oos = new ObjectOutputStream(new FileOutputStream(new File(name)))) {oos.writeObject(f);}
}public static <T, R, F extends Function<T, R>> F deserialise(String name) throws Exception {try (var ois = new ObjectInputStream(new FileInputStream(name))) {return (F) ois.readObject();}
}

在序列化函数中,我使用相交类型将函数转换为Serializable。 有一个带有测试主体的小项目
在这里演示序列化。 执行功能的主要方法:

public class Main {public static void main(String[] args) throws Exception {if (false) {serialise(s -> "hello - " + s, "func1");}System.out.println(deserialise("func1").apply("Greg"));//rewrite func-1serialise(s -> "goodbye - " + s, "func1");System.out.println(deserialise("func1").apply("Greg"));}public static <F extends Function & Serializable> void serialise(F f, String name) throws Exception {try (var oos = new ObjectOutputStream(new FileOutputStream(new File(name)))) {oos.writeObject(f);}}public static <T, R, F extends Function<T, R>> F deserialise(String name) throws Exception {try (var ois = new ObjectInputStream(new FileInputStream(name))) {return (F) ois.readObject();}}}

该项目的根目录中有一个序列化的lambda“ func-1”。 运行项目将看到func-1被覆盖,因此第二次执行将得到与第一次不同的结果:

第一次执行:

你好–格雷格

再见–格雷格

第二次执行:

再见–格雷格

再见–格雷格

希望您喜欢这篇小文章,并发现它有趣。

翻译自: https://www.javacodegeeks.com/2019/07/save-lambdas-rainy-day-save-file.html

lambda层保存模型出错

lambda层保存模型出错_保存您的lambda,以备不时之需-保存到文件相关推荐

  1. 保存您的lambda,以备不时之需-保存到文件

    介绍 简短的帖子,描述了如何将Java lambda持久保存到文件中以在不同的过程中重复使用. 序列化Lambda Java 8中引入的Lambda使函数成为Java语言的一等公民(几乎). 它们消除 ...

  2. model checkpoint保存模型出错问题分析

    问题描述: model在训练的时候不断调用 checkpoint 进行模型的报错,但是在调用的时候回报错:TypeError: No conversion path for dtype: dtype( ...

  3. pytorch保存模型pth_pytorch中保存的模型文件.pth深入解析

    前言:前面有专门的讲解关于如何深入查询模型的参数信息,可以参考这篇文章: 沈鹏燕:pytorch教程之nn.Module类详解​zhuanlan.zhihu.com 本次来解析一下我们通常保存的模型文 ...

  4. word文档保存文件时出错_保存时如何自动创建Word文档的备份副本

    word文档保存文件时出错 Backing up your documents is always a good thing to do, but not always something we re ...

  5. pytorch 保存模型出错, pickler.dump(obj) Error

    那个 把 报错中的 serialization.py 文件开头的 PROTOCOL=2 改成 PROTOCOL=4 我的报错中 serialization.py 的 路径是 lib/python3.8 ...

  6. 在java保存游戏状态_保存游戏状态的最佳方法是什么?

    但我听说这种方式有一些问题,不适合储蓄. 没错.在某些设备上,存在一些问题BinaryFormatter..当您更新或更改类时,情况会变得更糟.由于类不再匹配,您的旧设置可能会丢失.有时,由于这个原因 ...

  7. php怎么保存上传的文件夹里,PHP上传文件 保存到文件夹或数据库

    写到数据库: $filepath = $_FILES["uploadfile"]["name"]; $formdata=$_FILES["upload ...

  8. Tensorflow加载预训练模型和保存模型(ckpt文件)以及迁移学习finetuning

    使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...

  9. Tensorflow 加载预训练模型和保存模型

    使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...

最新文章

  1. 70种芯片细分领域、国产MCU重要代表企业
  2. “超级”容易用错的几个Airtest和Poco的API,看看你有没有遇到过
  3. linux下top命令
  4. Linux下没有包含头文件(不知是哪个)导致编译无法通过的解决心得
  5. ik分词和jieba分词哪个好_Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考...
  6. 在 Android* 平台上设置原生 OpenGL ES*
  7. 20145120 《Java程序设计》实验一实验报告
  8. wap绿色传奇搭建(纯净版)
  9. PDF拆分页面,免费拆分为多个PDF
  10. [实时更新]草木瓜BLOG发表的全部文章
  11. windows系统上删除顽固文件
  12. 手机QQ和微信打开网址 自动跳转到浏览器打开的代码
  13. reactos操作系统实现(12)
  14. php怎么转mp4,php使用memcoder将视频转成mp4格式的方法
  15. 修改Exchange2010 OWA登录时的企业logo
  16. 黄芪和当归的分量是5:1的比例,如黄芪30克,当归6克
  17. 三星电视安装Jellyfin
  18. PhotoScan无人机影像空三处理流程
  19. C# 在Excel中绘制图形
  20. Redis GEO使用

热门文章

  1. P5829 【模板】失配树
  2. 三角形周长和【牛客网】牛客网练习赛60
  3. YbtOJ-变量观测【鸽笼原理】
  4. P5163-WD与地图【tarjan,整体二分,线段树合并】
  5. YbtOJ#20064-[NOIP2020模拟赛B组Day4]预算缩减【树形dp】
  6. nssl1489-大冰隙2【树链剖分,线段树】
  7. codeforces gym100959 I - Robots(稠密图建图优化)
  8. 【随机】Ghd(CF364D)
  9. 【二分】雪(luogu 7405)
  10. SoundHound Inc. Programming Contest 2018[C. Ordinary Beauty]