tensorflow:保存与读取网络结构,参数等

在深度学习中,迁移学习是一个很普遍的操作,即将一个训练好的网络的一部分迁移到另一个网络,作为另一个网络结果的一部分.但是,我们要怎么保存和迁移呢?今天将以tensorflow的代码为例,给大家一个简单的介绍.
采用的函数是: tf.train.Saver()
1.存储和读取的步骤
(1)存储saver.save(sess, save_dir)

saver = tf.train.Saver()#声明ta.train.Saver()类用于保存
save_path = saver.save(sess,'save/filename.ckpt')#保存路径为相对路径的save文件夹,保存名为filename.ckpt

存储之后总共有几个后缀的文件:
filename.ckpt.meta:保存tensorflow的网络(计算图)结构
filename.ckpt:保存tensorflow中每一个变量的值
ckptpoint:保存一个目录下所有的模型文件列表
(2)读取saver.restore()

save.restore(sess, 'save/filename.ckpt')#从保存路径读取

在读取之前,先定义号和原来模型中相同的变量.读取出的结果直接赋值给变量使用
(3)直接测试已经训练好的模型
可以通过meta graph构建网络、载入训练时得到的参数,并使用默认的session:

saver = tf.train.import_meta_graph(‘save/filename.meta’)
saver.restore(tf.get_default_session(),’ save/filename.ckpt-16000’)

2.代码实现
代码实现我懒得写了,引用一个作者(Traphix)写好的,比较清晰明了: https://www.jianshu.com/p/83fa3aa2d0e9
(1)训练网络的

import 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取网络拓扑结构,需要进行网络发现和拓扑分析。在Java中可以使用网络拓扑工具包(Network Topology Discovery)来帮助实现这个功能。 这个工具包可以通过扫描网络中的IP地址和MAC地址,来发现连接在网络上的设备,并且可以根据设备之间的通信关系构建出网络拓扑结构。 以下是使用Java中的Network Topology Discovery工具包实现网络拓扑结构的步骤: 1. 创建一个NetworkTopologyDiscovery对象。 2. 调用discover()方法,开始发现网络设备。 3. 获取发现的设备列表。 4. 根据设备之间的通信关系,构建出网络拓扑结构。 下面是一个简单的Java代码示例: ```java import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.opennms.netmgt.snmp.SnmpAgent; import org.opennms.netmgt.snmp.SnmpFactory; import org.opennms.netmgt.snmp.SnmpSession; import org.opennms.netmgt.snmp.SnmpSessionFactory; import org.opennms.netmgt.snmp.SnmpVarBind; import org.opennms.netmgt.snmp.SnmpWalk; import org.opennms.netmgt.snmp.SnmpWalkParameters; import org.opennms.netmgt.snmp.SnmpWalkResult; public class NetworkTopologyDiscoveryExample { public static void main(String[] args) { try { // 创建一个SnmpSession对象,用来访问网络设备 SnmpSessionFactory factory = SnmpFactory.getInstance(); SnmpSession session = factory.newSnmpSession("localhost", 161, "public"); // 定义扫描参数 SnmpWalkParameters params = new SnmpWalkParameters(); params.setStartOid("1.3.6.1.2.1.4.20.1.1"); // 开始扫描网络设备 SnmpWalk walk = new SnmpWalk(session, params); SnmpWalkResult result = walk.execute(); // 获取扫描结果 Map<String, List<SnmpVarBind>> map = result.getMap(); List<InetAddress> addresses = new ArrayList<>(); // 构建设备列表 for (String key : map.keySet()) { List<SnmpVarBind> varBinds = map.get(key); for (SnmpVarBind varBind : varBinds) { String value = varBind.getValue().toString(); if (value != null && !value.equals("0.0.0.0")) { InetAddress address = InetAddress.getByName(value); addresses.add(address); } } } // 构建网络拓扑结构 for (InetAddress address : addresses) { SnmpAgent agent = new SnmpAgent(address.getHostAddress(), 161, "public"); agent.connect(); Map<String, String> info = agent.getInfo(); agent.disconnect(); String macAddress = info.get("macAddress"); String ifIndex = info.get("ifIndex"); String ipAddress = info.get("ipAddress"); System.out.println("Device: " + address.getHostAddress() + ", MAC Address: " + macAddress + ", ifIndex: " + ifIndex + ", IP Address: " + ipAddress); } } catch (UnknownHostException e) { e.printStackTrace(); } } } ``` 这个示例使用了OpenNMS中的网络拓扑工具包(Network Topology Discovery),并且通过SNMP协议来访问网络设备。它可以发现网络中的设备,并且输出设备的MAC地址、ifIndex和IP地址等信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值