我正在尝试使用
2. {训练网络} 3. 保存当前图形
tf.train.Saver()
在tensorflow中的两个卷积神经网络图之间应用迁移学习,并且我想验证我的方法是否按预期工作。有没有一种方法可以检查tf.layers.conv2d()
层中的可训练特征?
我的方法
1. 初始化层
conv1 = tf.layers.conv2d(inputs=X_reshaped, filters=conv1_fmaps, kernel_size=conv1_ksize,
strides=conv1_stride, padding=conv1_pad,
activation=tf.nn.relu,
kernel_initializer=tf.contrib.layers.xavier_initializer(),
bias_initializer=tf.zeros_initializer(), trainable=True,
name="conv1")
2. {训练网络} 3. 保存当前图形
tf.train.Saver().save(sess, "./my_model_final.ckpt")
Saver()
加载指定的权重reuse_vars = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES,
scope="conv[1]")
reuse_vars_dict = dict([(var.op.name, var) for var in reuse_vars])
restore_saver = tf.train.Saver(reuse_vars_dict)
...
restore_saver.restore(sess, "./my_model_final.ckpt")
restore_saver
从'./my_model_final.ckpt'路径中恢复会话(sess)。”5. {训练和评估新图}
我的问题:
1) 我的代码正常运行且没有错误,但我不确定它是否按照我想象的那样工作。有没有一种方法可以打印一个层的可训练特征,以确保我正确地加载和保存了权重?是否有更好的使用tf.layers
API保存/加载参数的方法?我在GitHub上注意到了一个相关的request。理想情况下,我想在第一个图形上检查这些值:a)初始化后 b)训练后;在新图形上 i)加载权重后 ii)训练/评估后。