我正在尝试获取hidden_layer2的权重矩阵并将其打印出来。 看起来我能够得到重量矩阵,但我无法打印它。
使用tf.Print(w, [w])
时,它什么都不打印。
使用print(tf.Print(w,[w])
时,它至少打印有关张量的信息:
Tensor("hidden_layer2_2/Print:0", shape=(3, 2), dtype=float32)
我还尝试在之外使用tf.Print()
-Statement,结果相同。
完整代码在这里,我只是处理前馈NN中的随机数据:https://pastebin.com/KiQUBqK4
我的代码的一部分:
hidden_layer2 = tf.layers.dense(
inputs=hidden_layer1,
units=2,
activation=tf.nn.relu,
name="hidden_layer2")
with tf.variable_scope("hidden_layer2", reuse=True):
w = tf.get_variable("kernel")
tf.Print(w, [w])
# Also tried tf.Print(hidden_layer2, [w])
答案 0 :(得分:1)
我相信这里有多个问题要解决。
运行eval()时应伴随一个会话。根据{{3}}中的建议,.eval()
希望正在运行默认会话,而在您之前的情况下这是不可能的。因此,最好的选择是在代码之前加上会话。从您的评论中,我们可以看到已经完成。
图形完成后,需要初始化隐藏层中的变量(即权重/内核)。因此,您可能想要使用类似于以下内容的东西:
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
with tf.variable_scope("hidden_layer2", reuse=True):
w = tf.get_variable("kernel")
print(w.eval(session=sess))
答案 1 :(得分:1)
针对TENSORFLOW 2.0更新
在TensorFlow 2.0中,由于Session对象已消失并且推荐的高级后端是Keras,因此获得权重的方法是:
from tensorflow.keras.applications import MobileNetV2
model = MobileNetV2(input_shape=[128, 128, 3], include_top=False) #or whatever model
print(model.layers[0].get_weights()[0])
答案 2 :(得分:0)
尝试这样做,
w = tf.get_variable("kernel")
print(w.eval())
答案 3 :(得分:0)
我采取了另一种方法。首先,我列出所有可训练的变量,并使用所需变量的索引,并在当前会话中运行它。该代码附在下面:
variables = tf.trainable_variables()
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
print("Weight matrix: {0}".format(sess.run(variables[0]))) # For me the variable at the 0th index was the one I required
答案 4 :(得分:0)
有关如何在namespace TEST
{
class Program
{
public delegate int Parsing(string parsee);
static void Main(string[] args)
{
Parsing parsee = new Parsing(Parse);
Console.WriteLine();
}
public static int Parse(string arrayString)
{
Console.WriteLine("Write the version numbers : ");
var input = Console.ReadLine();
string[] arrayString = input.Split('-');
List<int> listInt = new List<int>();
foreach (string i in arrayString)
{
listInt.Add(Convert.ToInt32(i));
}
listInt.ToArray();
foreach (var item in listInt)
{
Console.WriteLine(item);
}
return listInt;
}
}
}
中每层打印权重的示例:
tensorflow.js
答案 5 :(得分:0)
作为Tensorflow 2中Timbus Calin答案的更新,也可以使用get_weights()
,特别是get_weights()[1]
访问偏见。
例如在前馈网络中访问和打印权重和偏差:
for layer in self.model.layers:
print(layer.get_weights()[0]) # weights
print(layer.get_weights()[1]) # biases