- 博客(52)
- 收藏
- 关注
原创 论文笔记——KIMI-VL:具有增强推理能力的有效开源视觉语言模型
视觉语言模型 (VLM) 在人工智能领域正变得越来越重要,使系统能够处理和理解视觉和文本信息。Kimi-VL 代表了开源 VLM 的一项重大进步,解决了开源模型与 GPT-4o 和 Google Gemini 等专有解决方案之间的性能差距。该模型由 Moonshot AI 的 Kimi 团队开发,在效率、可扩展性和推理能力方面进行了创新。图 1:Kimi-VL 架构,展示了 MoonViT 视觉编码器处理各种输入类型、MLP 投影仪和混合专家 (MoE) 语言模型。
2025-04-12 17:44:33
1031
1
原创 Tensorflow多GPU计算
下面的代码都是在tensorflow版本 1.8 运行的Tensorflow 使用GPU训练的时候一个小说明1. tensorflow 默认占满所有可用GPU2. 如果一台机器上有多个GPU,那么默认只会有第一块GPU参与计算,其余的会白白浪费掉单机单卡常规操作,省略单机多卡各卡执行不同模型训练任务# 只需要在代码开头导入os,并指定使用第几块GPU,默认重0...
2019-05-11 09:52:24
2734
1
原创 Ubuntu16.04 终端神器Oh-My-Zsh + Tmux + vim 配置
vim 配置-github项目# step1. 克隆仓库git clone https://github.com/wklken/k-vim.git# step2. 安装依赖# ubuntusudo apt-get install ctagssudo apt-get install build-essential cmake python-dev #编译YCM自动补全插件依赖s...
2019-05-03 10:17:40
2494
原创 CPU与GPU的区别及通信时间简要分析
CPU与GPU的区别CPU就好比一个全能的教授,个人能力超级突出,可以处理各种各样的问题,但是在一些单计算的角度,尤其是深度学习发展所需要的大量的矩阵运算时,性能不如GPU,原因还是在与GPU设计走的小而简单化,而CPU走的是大而全的方向,所以往往在提到两者的时候会说在计算密集型的时候GPU会彰显更多的优势。随便闲扯一句,GPU能够适用于显卡计算,那么TPU是干嘛的勒,是不是Google抢占计...
2019-04-27 10:16:51
3785
原创 LINTCODE——单调递增的数
class Solution: """ @param num: a non-negative integer N @return: the largest number that is less than or equal to N with monotone increasing digits. """ def monotoneDigits(self, num): ...
2018-02-14 13:21:20
1649
原创 LINTCODE——Compute 24 Game
LINTCODE——Compute 24 Game题目:给你一个由4个数字组成的数组,判断这4个数能否通过*, /, +, -, (, ) ,计算得到24;思路:刚开始我想错了,以为只能再4个数中间添加运算符,结果题目是可以调换数组顺序的,修改之后依次遍历数组的情况,用next_permutation函数遍历,出现一个能计算得24立马结束程序;class Solution {public:
2017-12-16 21:42:35
1706
原创 LINTCODE——阶乘除法的最后一位数
LINTCODE——阶乘除法的最后一位数题目:给出两个数 A 和 B, 其中 B >= A. 我们需要计算结果 F 的最后一位数是什么, 其中F = B! / A!(1 <= A, B <= 10^18, A 和 B 非常大)思路:每次取最后一位数相乘之后再取最后一位数迭代就好了class Solution {public: /* * @param : the given num
2017-12-16 11:25:16
1580
原创 LINTCODE—— Coin Change II
LINTCODE—— Coin Change II题目:给你一个amount,再给你一个硬币数组,coins,数组的值表示为硬币的价值,硬币可以无限使用,求从数组中选择一定的组合满足硬币总价值等于amount有多少种情况思路:动态规划,类似于无限背包问题,假定dp[j]为从数组coins中选取总价值为j的情况,则不难得出有:dp[j] = dp[j] +dp[j-coins[i]],coins[i]
2017-12-16 11:11:11
1621
原创 LINTCODE——Digit Divide Numbers
LINTCODE——Digit Divide Numbers题目:给定一个区间【lower, upper】,寻找区间内的数字能分别整除各个位数上的数字,满足条件的数:eg,128,128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0,如果某位数为0,则相当于不满足;思路:还是比较简单的,提交的时候唯一要注意的就是INT_MAX = upper的情况,这个时候再循环
2017-12-15 16:45:20
1627
原创 LINTCODE—— 3个不同的因子
LINTCODE—— 3个不同的因子思路:加入n有三个不同的因子,那么只能是1,n,还有就是n的开方了,并且sqrt(n)为质数,然后就没有然后了。。。。class Solution {public: /* * @param : the given number * @return: return true if it has exactly three distin
2017-12-03 21:55:14
1976
原创 LINTCODE——判断k个素数之和
思路:要想通过的话,得用那个还没有被证明的哥德巴赫猜想,即任何一个大于2的偶数,都可以写成两个质数的和,那么我么可以知道,如果存在一个数n为偶数,并且有n>=2*k(k=1,2,3….),那么n必定可以表示成k个质数之和,解题思路就是把n和k划分(偶数,偶数),(偶数,奇数),(奇数,偶数),(奇数,奇数),然后往(偶数,偶数)的情况逼近就好了 PS:此外再判定一个较大的数num是否为质数的情况,
2017-11-22 09:25:25
1805
原创 LINTCODE——下一个稀疏数
LINTCODE——下一个稀疏数 思路:比特位我不太厉害,用的解法也不太理想,关键思路每次把x末尾i个数置0(二进制形式),再加上2的i次方就好了,判定是不是稀疏数,如果是就返回参数就OK了,其实可以优化到判断x的第i位非0才把i到0的之间的数置0…,不过有点懒,就不搞了,现在代码的最差时间是(O(32的平方));class Solution {public: /* * @par
2017-11-17 18:40:15
1776
原创 LINTCODE——计算最大值
LINTCODE——计算最大值给一个字符串类型的数字, 写一个方法去找到最大值, 你可以在任意两个数字间加 + 或 *您在真实的面试中是否遇到过这个题? Yes 样例 eg1:给出 str = 01231, 返回 10 ((((0 + 1) + 2) * 3) + 1) = 10 我们得到了最大值 10 eg2:给出 str = 891, 返回 73 因为 8 * 9 * 1 = 72 和 8
2017-11-17 13:05:02
1825
原创 LINTCODE————最小划分
LINTCODE————最小划分思路:利用背包问题的思路,对数组求和,计为sum,则我们只需要知道dp[sum/2]的分配是否存在就好可,如果不存在,那么我们取dp[sum/2-1]….一直到存在为止,dp[sum/2-i]存在的时候,也就是说明一边分配sum/2-i,一边 分配sum-sum/2+i为要求的最小分配,然后就差值就OK了class Solution {public: /*
2017-11-17 12:26:16
2533
原创 LINTCODE——Number of Subsequences of Form a^i b^j c^k
思路:这道题目还是很有意思的,统计情况,如果要遍历情况的话可以用回溯法,不过超时是必然的,我们可以用数学的思路来分析这个问题: 分析:abc必须按照顺序排列才能满足我们的情况,所以,我们从后往前考虑,不做任何的推理,光凭逻辑我们应该可以知道,当str[i] = ‘c’的时候,此时字符串的排列情况,应该与i之前的c出现的次数,以及b有关;同样的我们可以知道在i之前的j当str[j] = ‘b’的时候
2017-11-17 12:01:09
2333
1
原创 LINTCODE——二叉树具有相同值的最长路径
LINTCODE——二叉树具有相同值的最长路径思路:这套题目做了挺久的,思路清楚了其实不难 首先,这道题目中的E数组(存储边数据的数组)我们需要处理一下,我用的方法是建立一个二维数组adj,adj[i]存储与i节点相连的节点编号; 其次:我们在进行深度优先搜索的时候,要用一个marked的容器,记录节点i是否被访问过,如果被访问过,直接跳过节点i,不然会进入死循环 最后:最长路径的数据处理和L
2017-10-26 11:28:33
2375
原创 LINTCODE——Add Operators
LINTCODE——Add Operators思路:用回溯法去试,注意两个特殊情况: 一、数字越界,如果大于INT_MAX则溢出,不过给的数据没有这个,我把越界的检查删除了也AC了; 二、数字的有效性,即0987不是有效数字,这种情况要排除,排除方法也很简单,例如已知字符串str =“0987”,把str转换成long long 或者long型得到curNum,再次把curNum,to_stri
2017-10-23 10:39:53
1517
原创 LINTCODE——Folding Array
LINTCODE——Folding Array给一个长度为 n 的数组 nums 和一个长度为 k 的数组 req, 你需要根据要求折叠数组,并输出折叠的结果 1.如果 req[i] = 0 意味着你应该从左到右折叠, 例如:1 2 3 4 5 6 7 8 ==> 4 3 2 1 5 6 7 8 2.如果 req[i] = 1 意味着你应该从
2017-10-20 17:19:47
2132
原创 LINTCODE——重复字符串
LINTCODE——重复字符串思路:题目要就计算A的重复次数,则由A和B的长度不难得出重复次数cnt的最大值应该是等于(B.size()%A.size() <= 1 ? 1 :2) + B.size()/A.size(); 即,如果B的长度除以A的长度取整(记为x),此时如果恰好整除或者余1,则A所能匹配到的最长值所能重复的最大次数应该是x+1,若余数超过1,则为x+2,若是不理解,也可以自己画个
2017-10-20 13:36:41
1665
原创 LINTCODE——书籍复印
LINTCODE——书籍复印思路:刚开始用回溯做的,结果果然超时了,然后想了好久,发现可以用二分法,把每个人所需复印的页数作为二分法的讨论点,然后如果当前页数(即mid)能够满足少于或等于k个人数来复印,则二分法的右值左移(即查找有没有更小的数能够满足),反之左值右移class Solution {private: int res = INT_MAX;public: /*
2017-10-19 18:16:52
1743
原创 LINTCODE——创建最大数
LINTCODE——创建最大数思路:把这个问题分成两个子问题: 首先,求在数组中nums取k个数所能组成的最大数; 然后,把两个数组,nums1,nums2合并所能组成的最大数; 前提都是数字相对位置不变; PS:C++若已知nums1,nums2,则两个数组的大小可以直接用”>”等运算符来判断,这个和字符串一样,要是不想写两个数组比较的代码,可以直接用运算符;class Solution
2017-10-19 16:47:47
1600
原创 LINTCODE——区间求和II
LINTCODE——区间求和II思路:线段树的构造,线段树的查询,线段树的修改的结合版,三个程序拼接再一起就是这个题目的解法了,和统计前面比自己小的数的个数一样class Solution {class SegmentTreeNode{ public: int start, end; long long count; SegmentTreeNode *left
2017-10-17 17:09:28
1567
原创 LINTCODE——统计前面比自己小的数的个数
LINTCODE——统计前面比自己小的数的个数思路:线段树的构造,线段树的查询,线段树的修改的结合版,三个程序拼接再一起就是这个题目的解法了;class Solution {class SegmentTreeNode{ public: int start, end, count; SegmentTreeNode *left, *right; SegmentTr
2017-10-17 17:07:14
2256
原创 LINTCODE——表达树的构造
LINTCODE——表达树的构造思路: 首先,把中缀换成前缀或者后缀表达式; 然后,用计算前缀或者后缀表达式思路: 碰到数字:压入堆栈 碰到运算符:新建一个节点,左右分别指向出堆栈的两个,再压入堆栈; 最后,返回堆栈顶部元素;/** * Definition of ExpressionTreeNode: * class ExpressionTreeNode { * public:
2017-10-17 17:03:00
1693
原创 LINTCODE——将表达式转换为逆波兰表达式
LINTCODE——将表达式转换为逆波兰表达式思路:有了表达式求值的基础(请点击): http://blog.youkuaiyun.com/kaaokou/article/details/78262384题目就是中缀表达式转换为后缀表达式;class Solution {public: /* * @param expression: A string array * @ret
2017-10-17 16:56:10
1846
原创 LINTCODE——表达式求值
LINTCODE——表达式求值前期准备: 首先我们得要了解前缀、中缀、后缀表示式分别是什么,然后计算方法是什么 举例: (3 + 4) × 5 - 6 就是中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式 说简单点就是运算符的位置,在前的话就是前缀,以此类推; 详细了解请点击: http://blog.youkuaiyun.com/antineutri
2017-10-17 16:53:43
1613
原创 LINTCODE——删除二叉查找树的节点
LINTCODE——删除二叉查找树的节点思路: 一、删除的节点无左右节点,直接return NULL; 二、删除的节点只有一个左节点或者右节点,return delNode->left 或者return delNode->right; 三、删除的节点即有左节点也有右节点,则需要: 1、将delNode备份,temp = delNode; 2、delNode指向后继右节点的最
2017-10-13 11:26:29
1591
原创 LINTCODE——Convert BST to Greater Tree
LINTCODE——Convert BST to Greater Tree思路:考的就是另外一种遍历方式,记前序、中序、后序遍历分别为:MLR、LMR、LRM,那么题目就是要求你用RML这种遍历方式遍历更新就好了;class Solution {private: int s = 0;public: /* * @param root: the root of binary
2017-10-13 10:54:28
1048
原创 LINTCODE——Sliding Window Unique Elements Sum
LINTCODE——Sliding Window Unique Elements Sum 问题:Given an array and a window size that is sliding along the array, find the sum of the count of unique elements in each window.思路:总体来说不算太难,用一个map进出一个记录一下差
2017-10-11 15:35:22
2046
原创 LINTCODE——最大子数组III
LINTCODE——最大子数组III思路:动态规划的方法,记mustTheLast[i][j]为在前i个数中分成j段,且第j段必须有第i个数的最大值,notTheLast[i][j]为前i个中分成j段,且第j段不一定含有第i个数的最大值;注意初始化的数据,不能全部初始化为0,不然在全部为负整数以及一些其他情况的数组会出错; 动态规划方程为: mustTheLast[i][j] = max(mu
2017-10-11 13:10:52
1644
原创 LINTCODE——滑动窗口的中位数
LINTCODE——滑动窗口的中位数思路:跟数据流中位数的中位数一样(我之前发的数据流中位数不是用堆来实现的),建立两个堆,left存放数组的前半部分,right存放后半部分,则中位数就为left的最大值;class Solution {public: /* * @param nums: A list of integers * @param k: An integer
2017-10-10 20:33:36
1901
原创 LINTCODE——数据流中位数
LINTCODE——数据流中位数思路:每加入一个新的数,用二分法找到其在数组中的位置,方法O(1)的存储,O(nlogn)的时间class Solution {public: /* * @param nums: A list of integers * @return: the median of numbers */ vector<int> medi
2017-10-10 16:38:58
1509
原创 LINTCODE——房屋染色II
LINTCODE——房屋染色II思路:和房屋染色I一样,动态规划,不同的是,每一个房子的选择有K种,分析发现,令dp[i][j]表示为第i个房子染第j种颜色时的最小费用,则有等式dp[i][j] = costs[i-1][j]+min{dp[i-1][1toK且不等于j]}class Solution {public: /* * @param costs: n x k cost
2017-10-10 14:19:30
1701
转载 LINTCODE——吹气球
LINTCODE——吹气球思路:dp[start][end] 表示从start到end的最大分数。当mid气球吹爆的时候,left和right变成相邻的气球,此时如果将mid吹爆再切割,则不方便转移,那么就以mid为分割点,先吹爆两侧的气球。mid最后吹爆:mid = nums[start-1]*nums[i]*nums[end+1];参考class Solution {public: /
2017-10-10 10:49:24
1654
原创 LINTCODE——K组翻转链表
LINTCODE——K组翻转链表思路:和翻转链表差不多,就是要注意每隔K个值打断、翻转、拼接就好了/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *
2017-10-09 09:39:40
2168
原创 LINTCODE——单词切分
LINTCODE——单词切分思路:本来是用回溯的,结果严重超时,然后改成动态规划,解决了,这里需要说明的有两点, 第一点:在动态规划计算的时候,采用从i到0的顺序进行计算,这样会优化一点,然后如果得到mark[i]为TRUE(即前i个字符串可以分割的话),直接break,进行下一次循环; 第二点:最好在每次新加入s[i]的时候去字典里面查找,确定s[i]是否存在dict中,如果不存在,那就不用找
2017-09-28 10:43:46
1516
原创 LINTCODE——有效数字(待改进)
LINTCODE——有效数字思路:代码写的稀烂,暂时没想好更好的处理分类,虽然AC了,但是还是mark一下; 注意”+.1e4”为TRUE;class Solution {public: /* * @param s: the string that represents a number * @return: whether the string is a valid
2017-09-27 21:50:09
1545
原创 LINTCODE——转换字符串到整数
LINTCODE——转换字符串到整数思路:并不是特别难,主要把情况考虑到就好了,如果开始计算数值,那么之后出现的所有非数值元素,直接输出结果,还有再每次得到res的值之后都进行一次检查,防止long long型溢出;class Solution {public: /* * @param str: A string * @return: An integer *
2017-09-27 17:11:32
1526
原创 LINT_CODE——恢复IP地址
LINT_CODE——恢复IP地址思路:偷懒的思路是,生成一个0到255的关键字容器,在回溯的时候检测是否合格,合格就继续深层回溯;class Solution {public: /* * @param s: the IP string * @return: All possible valid IP addresses */ vector<strin
2017-09-25 16:15:50
1568
原创 LINTCODE——单词接龙
LINTCODE——单词接龙思路:先设计一个无序图,然后宽度优先搜索遍历;class Solution {public: /** * @param start, a string * @param end, a string * @param dict, a set of string * @return an integer *
2017-09-22 20:20:37
1599
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人