首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言中的函数为什么只能有一个返回值输出?怎么实现多个值输出?

    这是典型的C语言中函数模块中的返回值问题,算是常见的语法细节,很多人觉得C语言已经过时了,只能代表着这类人还不算是真正的技术人员,在嵌入式领域C语言依然充当着非常重要的角色,C语言在很多领域还是首选编程语言...常见的C语言难点有指针,结构体,函数,递归,回调,数组等等,看起来没多少东西,每个概念都能延伸很多功能点,今天的题目其实就是函数模块中的返回值的问题,面向对象编程的基本单元就属于函数,函数包括参数输入,...具体功能实现,最后是结果的输出,也就是这个题目的返回值,在正常情况下函数的返回值只有一个,但在实际编程中需要用到多个,在设计时候还是归结成一类,如果类型相近可以弄成数组方式,如果类型不太一致直接放在结构体中执行...1.全局变量传递 这种方式算是最不科学的规范,打破了软件开发需要的闭环策略,但在基本语法上是支持的,C语言里面最好少涉猎全局变量,使用出错的风险会提升很多,真要想使用建议还是用静态全局变量直接在变量的前面加上...,如果函数返回值是个指针的话,就能把整个结构体里面的内容返回出来,同样能够达到返回多个数值的作用,这种在平常的编程过程中用的最多,C语言中使用最频繁的关键点就是指针了,但也是很多初学者最不好理解的知识点

    7.5K30

    硬核Softmax!yyds! (面试真题,慎点!)

    在深度学习中,是一个常用的激活函数,广泛运用在图像分类任务中。那么,为什么会有这么多 函数的变形呢?来,一步一步看吧~ 首先,我们需要回顾下一开始的 函数。 看文章前,老规矩,关注下呀!...在分类任务时,我们一般使用 来接最后一层的输出,先对输出的特征做归一化操作,再将归一化之后的数值与标签做交叉熵损失函数来训练整个模型~ 整个过程差不多是长这样的: ?...第一个目标函数是带有软目标的交叉熵,这种交叉熵是在蒸馏模型的 中使用相同的 计算的,用于从繁琐的模型中生成软目标。第二个目标函数是带有正确标签的交叉熵。...这是在蒸馏模型的 中使用完全相同的逻辑,但在 下计算。我们发现,在第二个目标函数中,使用一个较低权重的条件,得到了最好的结果。...则: 又 同是凸函数 有 所以 注意到 所以: 考虑等号成立的条件需要任何 内积相同,而对于 维向量 ,只能找到 个点,使得两两连接的向量内积相同,如二维空间的三角形和三位空间的三面体

    98730

    从零开始学Pytorch(四)softmax及其实现

    \end{aligned} 既然分类问题需要得到离散的预测输出,一个简单的办法是将输出值 o_i 当作预测类别是 i 的置信度,并将值最大的输出所对应的类作为预测输出,即输出 \underset{i...2, 3], [4, 5, 6]]) print(X.sum(dim=0, keepdim=True)) # dim为0,按照相同的列求和,并在结果中保留列特征 print(X.sum(dim=1,...keepdim=True)) # dim为1,按照相同的行求和,并在结果中保留行特征 print(X.sum(dim=0, keepdim=False)) # dim为0,按照相同的列求和,不在结果中保留列特征...print(X.sum(dim=1, keepdim=False)) # dim为1,按照相同的行求和,不在结果中保留行特征 输出:tensor([[5, 7, 9]]) tensor([[ 6],...(1, y.view(-1, 1)) #1表示按行相加 def cross_entropy(y_hat, y): return - torch.log(y_hat.gather(1, y.view

    1.2K20

    CNN使用MNIST手写数字识别实战的代码和心得

    在传入的时候,我定义的BATCH_SIZE为512,所以具体的输入维度为(512,1,28,28) 我的CNN卷积神经网络的为两层卷积层,两次激活函数,两层池化层,和两层全连接层 卷积核设为5X5,步长...(BATCH_SIZE,1,28,28) 1.2经过激活函数,只将张量中的为负数的值变为0,不改变shape,各维度不变(BATCH_SIZE,14,28,28) 1.3经过最大池化层,将图片缩小,降采样...(BATCH_SIZE,28,7,7) 3.利用view函数,将张量拉平,shape变为(BATCH_SIZE,2877) 4.1经过第一层全连接层,将(2877)变为200,高度提纯,一个全连接层将卷积层提取的特征进行线性组合...__init__() self.conv1 = nn.Conv2d(1, 14, 5,1,2) # 卷积函数 1:灰度图片的通道 14:输出通达 5:kernel...# 输入:batch*14*14*14,输出:batch*28*7*7 x = x.view(input_size, -1) # 拉平,-1自动计算维度,28*7*7=1372

    1.7K00

    最简单的RNN回归模型入门(PyTorch)

    (W)输出o ,最后再经过一个非线性激活(可以是sigmoid函数或者softmax等函数)形成最后的输出y。...单向RNN的num_directions为1,双向RNN的num_directions为2。 他们的尺寸为什么是这样的呢?...输出的尺寸为 (sequence_length, batch_size, num_directions * hidden_size) 每一次RNN运行结果输出中还会附带输出中间隐藏状态$h_i$,当然这个尺寸和初始的隐藏状态相同...比较重要的几个超参数是:TIME_STEP指定输入序列的长度(一个序列中包含的函数值的个数),INPUT_SIZE是1,表示一个序列中的每个样本包含一个函数值。...我们自定义的RNN类包含两个模型:一个nn.RNN层,一个nn.Linear层,注意forward函数的实现,观察每个变量的尺寸(注释中给出了答案)。

    6.8K70

    教你几招搞定 LSTMs 的独门绝技(附代码)

    TIPS: 文本填充,使所有文本长度相等,pack_padded_sequence , 运行LSTM,使用 pad_packed_sequence,扁平化所有输出和标签, 屏蔽填充输出, 计算交叉熵损失函数..., [5, 5], [4, 5]] 技巧 1:利用填充(Padding)使 mini-batch 中所有的序列具有相同的长度。...(batch_size, seq_len, self.nb_tags) Y_hat = X return Y_hat 技巧 3 : 屏蔽(Mask Out )我们并不想在损失函数中处理的网络输出...屏蔽(Mask Out) 那些填充的激活函数 最终,我们准备要计算损失函数了。这里的重点在于我们并不想让用于填充的元素影响到最终的输出。 小提醒:最好的方法是将所有的网络输出和标签展平。...使用 pad_packed_sequence 对步骤 3的操作进行还原 5. 将输出和标记展平为一个长的向量 6. 屏蔽(Mask Out) 你不想要的输出 7.

    3.3K10

    【图像分类】 基于Pytorch的细粒度图像分类实战

    通过图片我们可以看到,两个txt文件中给出了不同图片的相对路径,而开头数字则代表了对应的标记信息,但是pytorch中的标签必须从0开始,因此我们只需要借助strip和split函数即可完成图像和标签信息的获取...') # 添加至列表 imgs.append((line, int(words[0])-1)) 输出结果示例如下图所示: ?...如上图所示,双线性网络包括两个分支CNN结构,这两个分支可以是相同的网络,也可以是不同的网络,本次实战使用Resnet 50做为相同的分支网络,以保证对比的客观性。...= x.size(0) x = x.view(batch_size, 2048, x.size(2) ** 2) x = (torch.bmm(x, torch.transpose...(x, 1, 2)) / 28 ** 2).view(batch_size, -1) x = torch.nn.functional.normalize(torch.sign(x) *

    1.9K30

    【机器学习实战】从零开始深度学习(通过GPU服务器进行深度学习)

    BatchNorm1d ()组合到网络层中。注意批标准化一般放在全连接层的后面、非线性层(激活函数)的前面。BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。...view()函数作用是将一个多行的Tensor,拼接成一行。...2.相同性 对于不同的图片,如果它们具有相同的特征,即使这些特征出现在图片的不同位置,也可以用同样的检测模式去检测不同图片的相同特征。  ...2.3 扁平化操作(view函数)   view()函数的功能是把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor...生成对抗网络会通过对抗过程来计算出这个损失函数。   对抗模型   对抗模型简单来说就是一个判断真假的判别器,相当于一个二分类问题,真的图片输出1,假的图片输出0。

    8.6K11

    NNLM的PyTorch实现

    ,即预料库中去重后的单词个数 m:词向量的维度,一般是50到200 H:隐藏层的weight d:隐藏层的bias U:输出层的weight b:输出层的bias W:输入层到输出层的weight h:...下面的函数首先将原始数据(词)全部转为索引,然后通过TensorDataset()和DataLoader()编写一个实用的mini-batch迭代器 def make_batch(sentences):..., n_step] ''' X = self.C(X) # [batch_size, n_step] => [batch_size, n_step, m] X = X.view(..., n_step] ''' X = self.C(X) # [batch_size, n_step] => [batch_size, n_step, m] X = X.view(...predict.squeeze()]) 这个代码一开始是在GitHub的一个项目中给出的,下面参考文献给出了链接,代码本身写的没有问题,但是其中有一行注释有问题,就是X=X.view(-1, n_step

    1.4K30

    动手学深度学习(二) Softmax与分类模型

    且这两个矩阵的第 ? 行分别为样本 ? 的输出 ? 和概率分布 ? 。 交叉熵损失函数 对于样本 ? ,我们构造向量 ? ,使其第 ? (样本 ? 类别的离散数值)个元素为1,其余为0。...keepdim=True)) # dim为1,按照相同的行求和,并在结果中保留行特征 print(X.sum(dim=0, keepdim=False)) # dim为0,按照相同的列求和,不在结果中保留列特征...print(X.sum(dim=1, keepdim=False)) # dim为1,按照相同的行求和,不在结果中保留行特征 tensor([[5, 7, 9]]) tensor([[ 6],...def net(X): return softmax(torch.mm(X.view((-1, num_inputs)), W) + b) 定义损失函数 ? ? ?...(y_hat.gather(1, y.view(-1, 1))) 定义准确率 我们模型训练完了进行模型预测的时候,会用到我们这里定义的准确率。

    81820

    给出两个长度相同的字符串 str1 和 str2 请你帮忙判断字符串 str1 能不能在

    给出两个长度相同的字符串 str1 和 str2, 请你帮忙判断字符串 str1 能不能在 零次 或 多次 转化 后变成字符串 str2, 每一次转化时,你可以将 str1 中出现的 所有 相同字母变成其他...输入:str1 = "aabcc", str2 = "ccdee"。 输出:true。 来自谷歌、亚马逊、微软、蔚来、腾讯、字节跳动、Uber。 来自左程云。...6.将 mapChars 数组中的所有元素重置为 -1。 7.遍历字符串 str1,对于每个字符 ch,将其转换为对应的索引 cur。...总的时间复杂度:假设字符串的长度为 n,遍历 str2 的时间复杂度是 O(n),遍历 str1 的时间复杂度也是 O(n),因此总的时间复杂度为 O(n)。...总的空间复杂度:除了字符串 str1 和 str2 的空间占用,还创建了长度为 26 的整数数组 mapChars,因此总的空间复杂度为 O(1)。

    13420
    领券