debug --“AttributeError: ‘Tensor‘ object has no attribute ‘numpy‘ --- tensor 没有 numpy()属性”
Posted tubesystem
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了debug --“AttributeError: ‘Tensor‘ object has no attribute ‘numpy‘ --- tensor 没有 numpy()属性”相关的知识,希望对你有一定的参考价值。
用回调函数取cnn中间层的kernel一切正常
class plot_kernel(keras.callbacks.Callback):
def on_epoch_end(self, batch, logs=):
img = Image.fromarray( model.get_layer(name="cnn_layer").kernel .numpy ()[:,:,0,i] *500+200 )
......
但是将kernel 换为 output 报错:“AttributeError: 'Tensor' object has no attribute 'numpy'
......
img = Image.fromarray( model.get_layer(name="cnn_layer").output .numpy ()[:,:,0,i] *500+200 )
......
搜索别人的解决方法,有2类解决方式,但是不work:
-
1,从tensorflow1 变为tensorflow2, 这种解决方式对于我的bug不起作用。我用的是tensorflow2。
- 2,使用tensorflow里的eager 模式, 这种解决方式对于我的bug也不起作用。eager模式默认打开。
于是做了不同的尝试
- 更换钩子位置不行
- def on_epoch_end(self, epoch, logs=None):
- def on_batch_begin(self, batch, logs=None):
- 降维不行
- img = Image.fromarray( tf.squeeze( model.get_layer(name="cnn_layer").output, axis=None ) .numpy ()[:,:,0,i] *500+200 )
- print(tensor) ,显示:
Tensor("cnn_layer/Sigmoid_2:0", shape=(None, 4, 4, 16), dtype=float32)
none 说明数据为空,
最终答案就是计算结束后内存已经释放,
用model.get_layer(name="cnn_layer").output获取不到中间数据, 只能获取类似weight权重和cnn卷积核之类的非中间数据
=====================================
参考
Tensorflow2.0 卷积神经网络可视化 (一)中间特征层可视化_
在 TensorBoard 中使用 Embedding Projector 呈现数据 | TensorFlow
tf.keras.callbacks.TensorBoard | TensorFlow v2.11.0
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/TensorBoard
tf.keras.callbacks.TensorBoard(
log_dir='logs',
histogram_freq=0,
write_graph=True, # 获取图像
write_images=False,
write_steps_per_second=False,
update_freq='epoch',
profile_batch=0,
embeddings_freq=0,
embeddings_metadata=None,
**kwargs
)
python - Keras, How to get the output of each layer? - Stack Overflow
里面提及了多种方法,基本上大同小异,都是建立一个模型的子集,然后重新计算一遍。
features_layer1 = tf.keras.models.Model(
inputs=model.inputs,
outputs=model.get_layer(name="layer1").output,
)
print(features_layer1)
以上是关于debug --“AttributeError: ‘Tensor‘ object has no attribute ‘numpy‘ --- tensor 没有 numpy()属性”的主要内容,如果未能解决你的问题,请参考以下文章
'Settings' object has no attribute 'TEMPLATE_DEBUG' 的解决方法