锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 人工智能 / 神经网络学习要点、神经网络学习核心
政企荣誉
  • 亚马逊语音识别合作亚马逊语音识别合作
    意向种子企业,小语种方向
  • 资本力量1+6融资活动政府推荐参加资本力量
    1+6融资活动
  • 输入法全平台上市公司众为兴
    合作伙伴
  • 中航信飞机票务平台河南职教中心
    成人学历和能力培训合作联盟成员
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

神经网络学习要点、神经网络学习核心

软件开发的发展,从算法和面向对象方向上讲,算法处理专门数据,面向对象能够生成一定的框架。而神经网络更是框架中的集大成者,神经网络节点按层组织流程,每个节点仿真了大脑里的神经元,进行数据判别,接收数据,输出数据。所以神经网络学习要点和神经网络学习核心就在于这些层怎么组织,在pytorch里这些叫动态图,下面就是一个描述层的动态图:

pytorch动态图

里面的embedding、relu和gru等等层,都有各自的目的,也依赖于模型环境,可以理解为模型里的一个对象或函数。因为要正确处理数据,所以动态图里的层的位置是不能错的,错了,就不会出数据结果。

另外一个神经网络学习要点和神经网络学习核心就是多个模型结合的处理,比如下面的代码:

teacher_forcing_ratio = 0.5

def train(input_tensor, target_tensor, encoder, decoder, encoder_optimizer, decoder_optimizer, criterion, max_length=MAX_LENGTH):
    encoder_hidden = encoder.initHidden()

    encoder_optimizer.zero_grad()
    decoder_optimizer.zero_grad()

    input_length = input_tensor.size(0)
    target_length = target_tensor.size(0)

    encoder_outputs = torch.zeros(max_length, encoder.hidden_size, device=device)

    loss = 0

    for ei in range(input_length):
        encoder_output, encoder_hidden = encoder(
            input_tensor[ei], encoder_hidden)
        encoder_outputs[ei] = encoder_output[0, 0]

    decoder_input = torch.tensor([[SOS_token]], device=device)

    decoder_hidden = encoder_hidden

    use_teacher_forcing = True if random.random() < teacher_forcing_ratio else False

    if use_teacher_forcing:
        # Teacher forcing: Feed the target as the next input
        for di in range(target_length):
            decoder_output, decoder_hidden, decoder_attention = decoder(
                decoder_input, decoder_hidden, encoder_outputs)
            loss += criterion(decoder_output, target_tensor[di])
            decoder_input = target_tensor[di]  # Teacher forcing

    else:
        # Without teacher forcing: use its own predictions as the next input
        for di in range(target_length):
            decoder_output, decoder_hidden, decoder_attention = decoder(
                decoder_input, decoder_hidden, encoder_outputs)
            topv, topi = decoder_output.topk(1)
            decoder_input = topi.squeeze().detach()  # detach from history as input

            loss += criterion(decoder_output, target_tensor[di])
            if decoder_input.item() == EOS_token:
                break

    loss.backward()

    encoder_optimizer.step()
    decoder_optimizer.step()

    return loss.item() / target_length

一个编码器模型对象,一个解码器对象,互相配合,先编码,再解码,进行语言翻译,是典型的多模型结合数据处理例子。里面的encoder_outputs是中间数据变量,结果在decoder_input里。zero_grad是梯度清0。在代码里出现了hidden,这在上面图形里也出现了,也是一个重要的中间变量。

神经网络学习要点和神经网络学习核心就是选择好模型,根据模型设计好层,再组织数据到层里,让层以神经元节点形式处理单维或多维数据,给出结果。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内劳动服务器公司办公楼一层