Tensorflow2.0使用model.fit训练,查看每一层的参数数值以及输出
用模型自定义的方式,很好找出模型的每层输出以及每层网络的参数,在call方法中输出就可以了,甚至还可以打断点。而在.fit中,不太好找了,先看代码。
# 引包
import tensorflow as tf
# 自定义模型,模型做多复杂都可以
model = tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(300, 64, mask_zero=True))
model.add(tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64, return_sequences=True))),
model.add(tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32))),
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5)),
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.summary()
# 随便来个输入
inputs = tf.constant([[1,2,3,4,5,6]])
# 让模型预测一下
model.predict(inputs)
1/1 [==============================] - 7s 7s/step
array([[0.49767774]], dtype=float32)
下面就是每层参数代码以及每层输出代码演示。PS.必须得predict一下才可以输出每层的输出值奥。
# 打印模型参数比较好弄
model.weights[-2]
<tf.Variable 'dense_9/kernel:0' shape=(16, 1) dtype=float32, numpy=
array([[ 0.30956584],
[ 0.00783366],
[-0.3481043 ],
[-0.250694 ],
[ 0.48268676],
[-0.5934146 ],
[ 0.06215805],
[-0.01834273],
[-0.46127337],
[ 0.567238 ],
[-0.4414227 ],
[ 0.0623157 ],
[ 0.24675208],
[-0.4773729 ],
[-0.5218497 ],
[-0.4344722 ]], dtype=float32)>
# 打印对应模型的输出参数,只需要该变index即可
tf.keras.models.Model(inputs=model.input, outputs=model.get_layer(index=-2).output)(inputs)
<tf.Tensor: shape=(1, 16), dtype=float32, numpy=
array([[0. , 0. , 0. , 0.00989295, 0.01003539,
0. , 0. , 0. , 0.00728755, 0. ,
0. , 0. , 0. , 0. , 0.01588851,
0. ]], dtype=float32)>
本文来自博客园,作者:赫凯,转载请注明原文链接:https://www.cnblogs.com/heKaiii/p/17137383.html