温习一下,写着玩。

import torch
import torch.nn as nn
import numpy as np
import torch.optim as optim class RNN(nn.Module): def __init__(self,input_dim , hidden_dim):
super(RNN,self).__init__()
self._rnn = nn.RNN(input_size = input_dim , hidden_size= hidden_dim )
self.linear = nn.Linear(hidden_dim , 1)
self.relu = nn.ReLU() def forward(self , _in):
layer1 , h = self._rnn(_in)
layer2 = self.relu(self.linear(self.relu(layer1)))
return layer2 def init_weight(self):
nn.init.normal_(self.linear.weight.data , 0 , np.sqrt(2 / 16))
nn.init.uniform_(self.linear.bias, 0, 0) def getBinDict(bit_size = 16):
max = pow(2,bit_size)
bin_dict = {}
for i in range(max):
s = '{:016b}'.format(i)
arr = np.array(list(s))
arr = arr.astype(int)
bin_dict[i] = arr
return bin_dict binary_dim = 16
int2binary = getBinDict(binary_dim) def getBatch( batch_size):
x = np.random.randint(0,256,[batch_size , 2])
x_arr = np.zeros([binary_dim , batch_size , 2 ] , dtype=int)
y_arr = np.zeros([binary_dim,batch_size,1] , dtype=int)
for i in range(0 , binary_dim):
batch_x_arr = np.zeros([batch_size,2] , dtype=int)
batch_y_arr = np.zeros([batch_size,1] , dtype=int)
for j in range(len(x)):
batch_x_arr[j] =[int2binary[int(x[j][0])][i] , int2binary[int(x[j][1])][i]]
batch_y_arr[j] =[int2binary[ int(x[j][0]) + int(x[j][1])][i]] #此处要翻转,rnn处理时是从下标为0处开始,所以要把二进制的高低位翻转
y_arr[binary_dim - i - 1] = batch_y_arr
x_arr[binary_dim - i - 1] = batch_x_arr
return x_arr , y_arr , x def getInt(y , bit_size):
arr = np.zeros([len(y[0])])
for i in range(len(y[0])):
for j in range(bit_size):
arr[i] += (int(y[j][i][0]) * pow(2 , j))
return arr if __name__ == '__main__':
input_size = 2
hidden_size = 8
batch_size = 100
net = RNN(input_size, hidden_size)
net.init_weight()
print(net)
optimizer = optim.Adam(net.parameters(), lr=0.01, weight_decay=1e-4)
loss_function = nn.MSELoss()#.CrossEntropyLoss()
for i in range(100000):
net.zero_grad()
x ,y , t = getBatch(batch_size)
in_x = torch.Tensor(x)
y = torch.Tensor(y)
output = net(in_x)
loss = loss_function(output , y)
loss.backward()
optimizer.step() if i % 100== 0:
output2 = torch.round(output)
result = getInt(output2,binary_dim)
print(t , result)
print('iterater:%d loss:%f'%(i , loss))

pytorch rnn的更多相关文章

  1. pytorch rnn 2

    import torch import torch.nn as nn import numpy as np import torch.optim as optim class RNN(nn.Modul ...

  2. [PyTorch] rnn,lstm,gru中输入输出维度

    本文中的RNN泛指LSTM,GRU等等 CNN中和RNN中batchSize的默认位置是不同的. CNN中:batchsize的位置是position 0. RNN中:batchsize的位置是pos ...

  3. pytorch --Rnn语言模型(LSTM,BiLSTM) -- 《Recurrent neural network based language model》

    论文通过实现RNN来完成了文本分类. 论文地址:88888888 模型结构图: 原理自行参考论文,code and comment: # -*- coding: utf-8 -*- # @time : ...

  4. pytorch RNN层api的几个参数说明

    classtorch.nn.RNN(*args, **kwargs) input_size – The number of expected features in the input x hidde ...

  5. 机器翻译注意力机制及其PyTorch实现

    前面阐述注意力理论知识,后面简单描述PyTorch利用注意力实现机器翻译 Effective Approaches to Attention-based Neural Machine Translat ...

  6. PyTorch专栏(六): 混合前端的seq2seq模型部署

    欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/ 欢迎关注PyTorch官方中文教程站: http://pytorch.panchuang.net/ 专栏目录: 第一 ...

  7. 混合前端seq2seq模型部署

    混合前端seq2seq模型部署 本文介绍,如何将seq2seq模型转换为PyTorch可用的前端混合Torch脚本.要转换的模型来自于聊天机器人教程Chatbot tutorial. 1.混合前端 在 ...

  8. “你什么意思”之基于RNN的语义槽填充(Pytorch实现)

    1. 概况 1.1 任务 口语理解(Spoken Language Understanding, SLU)作为语音识别与自然语言处理之间的一个新兴领域,其目的是为了让计算机从用户的讲话中理解他们的意图 ...

  9. Pytorch系列教程-使用字符级RNN生成姓名

    前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/char_rnn_generation_tutor ...

随机推荐

  1. 学会读JQuery等JS插件源码

    看了 http://my249645546.iteye.com/blog/1716629 上的这篇文章感觉挺好的,所以决定转过来,谢谢这位博主. 很多人觉得jquery.ext等一些开源js源代码 十 ...

  2. C++ 匿名对象初始化新对象

    //c++中匿名对象初始化新对象 #include<iostream> using namespace std; class Point{ public: Point(){ cout &l ...

  3. svn & git 问题汇总

    svn: warning: W150002: '/Users/piercalex/svn/azzz/1' is already under version control svn: E200009: ...

  4. 如果可能的话,使用 PC-Lint、LogiScope 等工具进行代码审查

    如果可能的话,使用 PC-Lint.LogiScope 等工具进行代码审查. #include <iostream> #include <algorithm> #include ...

  5. 多媒体开发之rtsp---rtsp client 端的实现

    http://blog.csdn.net/xyz_lmn/article/details/6055179 java实现 http://www.cnblogs.com/wohexiaocai/p/454 ...

  6. Windows下基于eclipse的Spark应用开发环境搭建

    原创文章,转载请注明: 转载自www.cnblogs.com/tovin/p/3822985.html 一.软件下载 maven下载安装 :http://10.100.209.243/share/so ...

  7. Angular2 Observable 可观察对象

    可观察对象支持在应用中的发布者和订阅者之间传递消息.在需要进行事件处理,异步编程和处理多值的时候,可观察对象相对其他技术有显著的优点. 可观察对象是声明式的 —— 也就是说,虽然你定义了一个用于发布值 ...

  8. 我的Android进阶之旅------&gt;MIME类型大全

    今天在实现一个安装apk的代码中看到一段代码为:application/vnd.android.package-archive.不知其意.所以百度了一下,了解到这是一种MIME的类型,代表apk类型. ...

  9. Spring_day01--注入对象类型属性(重点)_P名称空间注入_注入复杂类型属性_IOC和DI区别_Spring整合web项目原理

    注入对象类型属性(重点) Action要new一个service对象,Service中又要new一个Dao对象,现在把new的过程交给spring来操作 1 创建service类和dao类 (1)在s ...

  10. iOS开发之--如何修改TabBarItem的title的字体和颜色/BarButtonItem的title的字体大小和颜色/添加背景图片,并添加点击方法

    在进行项目的过程中,我们往往会遇到各种各样的自定义颜色和字体,下面提供一种修改系统自带的TabBarItem的字体和颜色的方法,希望能帮到大家: [[UITabBarItem appearance] ...