随着tensor所在的层数变深,DeepDream优化出来的图形也更加复杂
除了将某个tensor整个作为目标,也可以仅选择一个filter的响应值进行优化
例如选择mixed4c的某个filter,可以看到不同的filter偏好的图形是不一样的
for i in range(10): print('Filter %d of mixed4c' % i) result = recursive_dream(layers[7][:, :, :, i], image) plt.figure(figsize=(10, 15)) plt.imshow(result / 255.) plt.show() imsave('imgs/mixed4c_filter_%d.jpg' % i, result)复制代码mixed4c的filter0对应结果
mixed4c的filter8对应结果
当然,也可以对一张图片反复执行DeepDream,优化出来的图形会变得越来越明显
img = image.copy()imgs = []for i in range(20): print('Iteration %d of mixed4c' % i) img = recursive_dream(layers[7], img) plt.figure(figsize=(10, 15)) plt.imshow(img / 255.) plt.show() imgs.append(img)mimsave('imgs/mixed4c多轮迭代结果.gif', imgs, fps=5)复制代码结果有点鬼畜,可能是mixed4c比较喜欢狗吧……