Tensorflow 合并通道及加载子模型的方法

yipeiwu_com6年前Python基础

最近在使用Tensorflow 实现DNN网络时,遇到一些问题。目前网上关于Tensorflow的资料还比较少,现把问题和解决方法写出来,仅供参考。

(1)将两个子模型的输出合并到一个通道,例如同时连接到一个全连接层如图

合并方法为 tf.concat()函数。此函数需要两个个参数 concat(0或1,[合并节点1,合并节点2] )。0 或 1 代表节点合并的方式:0 代表合并后列相同,行增加;1 代表合并后行相同,列增加。

上图所示合并方法为: X_20 = tf.concat(1, [X_top, X_down]);

(2)加载预训练好模型的部分参数。例如训练完成了一个五层网络,现在需要训练好一个七层网络,使用已训练好的五层网络参数初始化七层网络的前五层。

首先,五层网络保存模型时的参数变量名要和七层网络的需要初始化的参数变量名保持一致。

然后,定义加载指定变量名的 tf.train.Saver()。

例如:

Saver在restore模型时就会只加载 W_fc1_I, W_fc2_I, b_fc1_I, b_fc2_I 这四个参数,并且初始化当前模型中变量名相同的变量。需要注意的是,其他参数也是需要初始化的,一种避免遗漏初始化变量的方法是首先使用 initialize_all_variables() 函数对所有参数进行初始化之后再调用 restore 函数初始化需要的部分参数。

此方法只是其中一种解决方法,仅供参考。

以上这篇Tensorflow 合并通道及加载子模型的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python selenium登录豆瓣网过程解析

登录流程: 实例化一个driver,然后driver.get()发送请求 最重要的:切换iframe子框架,因为豆瓣的网页中的登录那部分是一个ifrme,必须切换才能寻找到对...

Python实现线性插值和三次样条插值的示例代码

Python实现线性插值和三次样条插值的示例代码

(1)、函数 y = sin(x) (2)、数据准备 #数据准备 X=np.arange(-np.pi,np.pi,1) #定义样本点X,从-pi到pi每次间隔1 Y= np.s...

Python批量查询域名是否被注册过

Python批量查询域名是否被注册过

step1. 找一个单词数据库 这里有一个13万个单词的 http://download.csdn.net/detail/u011004567/9675906 新建个mysql数据库wo...

python之pandas用法大全

一、生成数据表 1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd 2、导入C...

python实现批量文件重命名

python实现批量文件重命名

本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下 问题描述 最近遇到朋友求助,如何将大量文件名前面的某些字符删除。 即将图中文件前的编号删除。 P...