12.9

12.9

我终于更新博客了!呜呜呜最近有点小懒各位爸爸们体谅一下。最开始是打算整理这次算法作业的,但这次的算法作业也太简单了8(狗头保命)。Greedy,目光短浅算法的作业就是猜一猜思路一条道走到黑就可以了。这次更新一些矩阵编程和机器学习相关的内容。

np.argsort

在奇异值分解的编程作业中,要对求出的特征值进行大小排序,之后相应的左右矩阵要按照最大特征值的顺序进行列变换。
np.argsort的作业是返回一个数组从小到大的索引,我查了一下只能返回从小到大不能返回从大到小,于是可以这样操作:

sortid = np.argsort(R_)[::-1]

其中R是得到的特征值数组。在后面加上[: : -1]即可实现特征值从大到小的索引,那如何根据索引进行列变换呢?

U = U[:,sortid]

左部分冒号代表取所有行。之前见过的都是U=U[:,1]这样的,意思为取U的第二列。比较少看到后面跟一个(索引)数组。这样列向量就按索引重新排列了,举个例子:
在这里插入图片描述说到行(列)向量交换再提一嘴,如果只是想单独交换两行(列),我用temp来存储临时数据的方式完全不管用,如图:
在这里插入图片描述A[2]=temp语句并没有按我们想象中执行,深究原因我发现temp的值随着A[1]变化自己也悄悄发生了变化!
在这里插入图片描述真的很离奇哈。。正确的做法还是按照索引的方法,只不过不能取所有的行(列)了,将指定的行进行索引调换即可。
在这里插入图片描述

np.tril_indices

在Givens变换中,需要依次取对角线下方的元素进行变换。np.tril_indices函数就可以方便地拿到矩阵对角线下方元素的索引值
np.tril_indices(行数,-1,列)
不需要具体的矩阵作为参数。-1只是相对于对角线的位置!如果将-1改成0,也要取包括对角线在内的索引值。可以这样理解:每加1,分割线就上移一行。返回的值有两个数组,行索引和列索引,最好得用两个东西去接。如果只用一个东西去接,就变成了集合数组。
在这里插入图片描述这样我们就得到了对角线下方的坐标[1,0],[2,0],[2,1],现在要将两个数组结合进行遍历,我们就用到了zip函数。
在这里插入图片描述zip函数也用得很少,留个印象,以后肯定要用到。

分割线

被大佬带着打完了比赛,其实还是有学到一些东西的。
当初我找的BERT模板实在是简陋,没有用one-hot向量,没有激活函数,没有Dropout,说一些踩过的坑吧

损失函数

对于训练集的标签,模板是直接采用10进制保存没有进行任何转换,所以在对模型进行训练的时候,损失函数为:

loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
metric = tf.keras.metrics.SparseCategoricalAccuracy('accuracy')
model.compile(optimizer=optimizer, loss=loss, metrics=[metric])

注意到不管是准确率还是损失函数都用上了SparseCategorical,因为这个函数是专门给10进制标签作判定的。from_logits=True的原因是没有使用激活函数(这个模板真的拉垮),如果有就改成False。(默认值就是False)

将标签集变成one-hot向量所使用的函数是:

label = tf.cast(label, dtype=tf.int32)
label = tf.squeeze(label)
label = tf.one_hot(label, depth=10) #十分类

变成one-hot向量之后,损失函数改成:

loss = tf.keras.losses.CategoricalCrossentropy(from_logits=False)
metric = tf.keras.metrics.CategoricalAccuracy('accuracy')

没有了前面的Sparse

还有一个点,如果要预测精确率和召回率,使用函数:

metrics=[tf.keras.metrics.Recall(), tf.keras.metrics.Precision()]

但前提是模型输出的评分结果都为正数!
所以得在前头补充一个softmax激活函数。

下期再见,Bye呀~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CPLEX 12.9 是一个优化求解器,用于解决线性规划、整数规划、二次规划等数学优化问题。它基于高效的算法和先进的求解技术,能够处理大规模的问题并提供高质量的解决方案。 CPLEX 12.9 提供了丰富的功能和特性,可以有效地利用计算资源来解决复杂的优化问题。它支持多种编程接口和文件格式,使得用户可以方便地与不同的应用程序和环境集成。同时,CPLEX 12.9 还提供了直观的图形界面,用户可以可视化地设置和调整问题参数,并实时查看求解过程和结果。 CPLEX 12.9 具有高度的可扩展性和灵活性。它支持并行计算和分布式计算,可以利用多核和多台计算机的资源来加速求解过程。此外,它还提供了多种求解策略和启发式方法,用户可以根据问题的特点进行调整和优化,以获得更好的性能和解决方案。 CPLEX 12.9 的资源需求较低。它运行在常见的操作系统上,如Windows、Linux和Mac OS,可以在个人计算机、集群和云平台上运行。它对硬件的要求较低,可以在普通的计算机上进行求解,同时具有高效的内存管理和算法实现,能够有效地利用有限的资源来解决大规模问题。 综上所述,CPLEX 12.9 是一款功能强大且资源需求较低的优化求解器,可以广泛应用于各种领域,如物流、生产调度、金融投资等,帮助用户优化决策并提升效益。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值