没有合适的资源?快使用搜索试试~ 我知道了~
卷积核可视化 import matplotlib.pyplot as plt import numpy as np from keras import backend as K from keras.models import load_model # 将浮点图像转换成有效图像 def deprocess_image(x): # 对张量进行规范化 x -= x.mean() x /= (x.std() + 1e-5) x *= 0.1 x += 0.5 x = np.clip(x, 0, 1) # 转化到RGB数组 x *= 255 x = np.clip(x, 0, 25
资源推荐
资源详情
资源评论
keras CNN卷积核可视化卷积核可视化,热度图教程热度图教程
卷积核可视化卷积核可视化
import matplotlib.pyplot as plt
import numpy as np
from keras import backend as K
from keras.models import load_model
# 将浮点图像转换成有效图像
def deprocess_image(x):
# 对张量进行规范化
x -= x.mean()
x /= (x.std() + 1e-5)
x *= 0.1
x += 0.5
x = np.clip(x, 0, 1)
# 转化到RGB数组
x *= 255
x = np.clip(x, 0, 255).astype('uint8')
return x
# 可视化滤波器
def kernelvisual(model, layer_target=1, num_iterate=100):
# 图像尺寸和通道
img_height, img_width, num_channels = K.int_shape(model.input)[1:4] num_out =
K.int_shape(model.layers[layer_target].output)[-1]
plt.suptitle('[%s] convnet filters visualizing' % model.layers[layer_target].name)
print('第%d层有%d个通道' % (layer_target, num_out))
for i_kernal in range(num_out):
input_img = model.input
# 构建一个损耗函数,使所考虑的层的第n个滤波器的激活最大化,-1层softmax层
if layer_target == -1:
loss = K.mean(model.output[:, i_kernal])
else:
loss = K.mean(model.layers[layer_target].output[:, :, :, i_kernal]) # m*28*28*128
# 计算图像对损失函数的梯度
grads = K.gradients(loss, input_img)[0] # 效用函数通过其L2范数标准化张量
grads /= (K.sqrt(K.mean(K.square(grads))) + 1e-5)
# 此函数返回给定输入图像的损耗和梯度
iterate = K.function([input_img], [loss, grads])
# 从带有一些随机噪声的灰色图像开始
np.random.seed(0)
# 随机图像
# input_img_data = np.random.randint(0, 255, (1, img_height, img_width, num_channels)) # 随机
# input_img_data = np.zeros((1, img_height, img_width, num_channels)) # 零值
input_img_data = np.random.random((1, img_height, img_width, num_channels)) * 20 + 128. # 随机灰度
input_img_data = np.array(input_img_data, dtype=float)
failed = False
# 运行梯度上升
print('####################################', i_kernal + 1)
loss_value_pre = 0
# 运行梯度上升num_iterate步
for i in range(num_iterate):
loss_value, grads_value = iterate([input_img_data])
if i % int(num_iterate/5) == 0:
print('Iteration %d/%d, loss: %f' % (i, num_iterate, loss_value))
print('Mean grad: %f' % np.mean(grads_value))
if all(np.abs(grads_val) < 0.000001 for grads_val in grads_value.flatten()):
failed = True
print('Failed')
break
if loss_value_pre != 0 and loss_value_pre > loss_value:
break
if loss_value_pre == 0:
loss_value_pre = loss_value
资源评论
weixin_38603704
- 粉丝: 7
- 资源: 971
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- markDown工具typora与kotlin
- 基于Redis实现消息队列的实践,redis开发入门
- 3D打印机mac下载软件:HALOT-BOX-v3.5.0.2150-macx-Release.dmg
- qt开发显示图像线程 showpthread
- 3D打印机win下载软件:HALOT-BOX-v3.5.0.2149-win64-Release.exe
- stm32f103c8t6编码器解析
- esp8266_deauther_2.6.1_DISPLAY_EXAMPLE_I2C.bin
- C#电子病历管理系统源码 医院电子病历源码数据库 SQL2008源码类型 WebForm
- 3D打印机HALOT-RAY-SM-001说明书
- pointnet2-backbone 语义分割模型
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功