python矩阵的转置、逆与乘积计算

矩阵定义

定义常规矩阵

import numpy as np
from numpy import *

x=array([[1,1,1],[2,2,2]])

print("X:",X2)
print("X[0]:",X2[0])

在这里插入图片描述

定义0矩阵

import numpy as np
from numpy import *

a=zeros(3)
b=zeros((4,3))

#矩阵切片
c=b[1:3,2:4]
print("a:",a)
print("b:",b)
print("c:",c)

在这里插入图片描述

矩阵调用

调用方式含义
X[0]取矩阵X的第0行所有元素
X[0,:]就是取矩阵X的第0行所有元素
X[:,0]取矩阵X所有行的第0列的元素
X[:,m:n]取矩阵X所有行中的第m到n-1列数据(不包含n列)

转置

x=array([[1,1,1],[2,2,2]])
y=x.T #转置

print("y:",y)

在这里插入图片描述

对A求逆矩阵可直接用 B=np.linalg.inv(A),若需要判断是否可逆则见下文:

import numpy as np
from numpy import *

try:
    A = np.array([[1,1],[2,-2]])
    print(A)
    B=np.linalg.inv(A)
except:
    print("矩阵不存在逆矩阵")
else:
    print(B)

在这里插入图片描述
矩阵不存在见下图:
在这里插入图片描述

乘积

点乘

import numpy as np
from numpy import *

x=array([[1,1],[2,2],[2,2]])
x1=array([[1,1,1],[2,2,2]])
A=np.dot(x1,x)
print(A)

在这里插入图片描述

叉乘

直接乘号*

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于卷积神经网络实现图像风格的迁移(含源码、数据集、说明文档)(深度学习实战).zip # 图像风格迁移 ## 简介 - 利用卷积神经网络实现图像风格的迁移。 ## 画风迁移 - 简单来说就是将另一张图像的绘画风格在不改变原图图像内容的情况下加入到原图像中,从而“创造”名家风格的绘画作品。 - 这其中牵扯到很多难题,但是很多问题已经被一一攻克,一般而言,这类问题将涉及到图像风格的捕捉、图像风格的迁移、图像风格的组合等主要流程。 - 整体看来,卷积核特征的捕捉及应用、图像相干性的优化、画风的组合将是难题。 ## 图像风格捕捉 - 原理 - 通过将格拉姆矩阵(gram matrix)应用于卷积神经网络各层能够捕获该层的样式,所以,如果从填充了随机噪声的图像开始,对其进行优化使得网络各层的格拉姆矩阵与目标图像的格拉姆矩阵相匹配,那么不难理解,生成的图像将会模仿目标图像的风格。 - 可以定义一个style损失函数,计算两组激活输出值各自减去格拉姆矩阵之后计算平方误差。在原始图像和目标图像(莫奈的《睡莲》)上进行训练,将两幅图片输入VGG16的卷积神经网络,对每个卷积层计算上述style损失并多层累加,对损失使用lbfgs进行优化(它需要梯度值和损失值进行优化)。 - 其实,很多观点认为,匹配图像风格的最好方式是直接匹配所有层的激活值,事实上,格拉姆矩阵效果会更好一些,这点并不容易理解。其背后的原理是,通过计算给定层的每个激活值与其他激活值的乘积,我们获得了神经元之间的相关性。这些相关性可以理解为图像风格的编码,因为他们衡量了激活值的分布情况,而不是激活值本身。 - 这也带来了几个问题。一个就是零值问题,在任一被乘数为零的情况下,一个向量和自己的转置的点积都会是零,模型无法在零值处识别相关性。由于零值频繁出现,可以在执行点积前为特征值添加一个小的差量delta,delta去-1即可。还有一个问题就是,我们计算了所有激活值的格拉姆矩阵,难道不是应该针对像素通道计算吗?事实上,我们为每个像素的通道都计算了格拉姆矩阵,然后观察它们在整个图像上的相关性,这样做提供了一个捷径:可以计算通道均值并将其用作格拉姆矩阵,这会帮助获得一幅平均风格的图像,更有普适性。 - 同时,添加了总变分损失(total variation loss),要求网络时刻检查相邻像素的差异,否则,图像会趋于像素化且更加不平缓。某种程度上,这种方法与用于持续检查层权重与层输出的正则化过程非常类似,整体效果相当于在输出像素上添加了一个略微模糊的滤镜。(本质上,这是一种模糊化的方法)该部分的结果是将最后一个组成成分添加到了损失函数中,使得图像整体更像内容图像而不是风格图像。这里所做的,就是有效优化生成图像,使得上层的激活值对应图像内容,下层的激活值对应图像风格,也就是网络底层对应图像风格,网络高层对应图像内容,通过这种方式实现图像风格转换。 - 代码 - ```python def gram_matrix(x): if K.image_data_format() != 'channels_first': x = K.permute_dimensions(x, (2, 0, 1)) features = K.batch_flatten(x) return K.dot(features - 1, K.transpose(features - 1)) - 1 def style_loss(layer_1, layer_2): gr1 = gram_matrix(layer_1) gr2 = gram_matrix(layer_2) return K.sum(K.square(gr1 - gr2)) / (np.prod(layer_2.shape).value ** 2) w, h = 740, 468 style_image = K.variable(preprocess_image(style1_image_path, target_size=(h, w))) result_image = K.placeholder(style_image.shape) input_tensor = K.concatenate([st

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值