动量法应用NASA测试不同飞机机翼噪音
%matplotlib inline
from mxnet import nd
import numpy as np
from mxnet import autograd,gluon,init,nd
from mxnet.gluon import nn,data as gdata,loss as gloss
import time def get_data():
data = np.genfromtxt('./data/airfoil_self_noise.dat', delimiter='\t')
data = (data - data.mean(axis=0)) / data.std(axis=0)
return nd.array(data[:1500, :-1]), nd.array(data[:1500, -1]) features, labels = get_data()
features[0]
labels[0] # 定义网络
def linreg(X,w,b):
return nd.dot(X,w) + b # 平方损失
def squared_loss(y_hat,y):
return (y_hat - y.reshape(y_hat.shape))**2/2 # 初始化参数
def init_momentum_states():
v_w = nd.zeros((features.shape[1], 1))
v_b = nd.zeros(1)
return (v_w, v_b) # params [w,b]
# states [v_w,v_b] 初始化状态
# hyperparams {'lr':0.02,'momentum':0.5}
def sgd_momentum(params, states, hyperparams):
for p, v in zip(params, states):
v[:] = hyperparams['momentum'] * v + hyperparams['lr'] * p.grad
p[:] -= v def train(trainer_fn, states, hyperparams, features, labels,
batch_size=10, num_epochs=2):
# 初始化模型。
net, loss = gb.linreg, gb.squared_loss
w = nd.random.normal(scale=0.01, shape=(features.shape[1], 1))
b = nd.zeros(1)
w.attach_grad()
b.attach_grad() def eval_loss():
return loss(net(features, w, b), labels).mean().asscalar() ls = [eval_loss()]
data_iter = gdata.DataLoader(
gdata.ArrayDataset(features, labels), batch_size, shuffle=True)
for _ in range(num_epochs):
start = time.time()
for batch_i, (X, y) in enumerate(data_iter):
with autograd.record():
l = loss(net(X, w, b), y).mean() # 使用平均损失。
l.backward()
trainer_fn([w, b], states, hyperparams) # 迭代模型参数。
if (batch_i + 1) * batch_size % 100 == 0:
ls.append(eval_loss()) # 每 100 个样本记录下当前训练误差。
# 打印结果和作图。
print('loss: %f, %f sec per epoch' % (ls[-1], time.time() - start))
gb.set_figsize()
gb.plt.plot(np.linspace(0, num_epochs, len(ls)), ls)
gb.plt.xlabel('epoch')
gb.plt.ylabel('loss') train(trainer_fn=sgd_momentum,states= init_momentum_states(),hyperparams={'lr': 0.02, 'momentum': 0.5}, features=features, labels=labels) train(sgd_momentum,init_momentum_states(),{'lr':0.02,'momentum':0.9},features,labels) train(sgd_momentum,init_momentum_states(),{'lr':0.004,'momentum':0.9},features,labels)



gluon 版:
def train_gluon(trainer_name,trainer_hyperparams,features,labels,batch_size=10,num_epochs=2):
# 初始化模型
net = nn.Sequential()
net.add(nn.Dense(1))
net.initialize(init.Normal(sigma=0.01))
loss = gloss.L2Loss() def eval_loss():
return loss(net(features),labels).mean().asscalar() ls = [eval_loss()]
data_iter = gdata.DataLoader(gdata.ArrayDataset(features,labels),batch_size,shuffle=True) # 创建 Trainer 实例迭代模型参数
trainer = gluon.Trainer(net.collect_params(),trainer_name,trainer_hyperparams) for _ in range(num_epochs):
start = time.time()
for batch_i, (X,y) in enumerate(data_iter):
with autograd.record():
l = loss(net(X),y)
l.backward()
trainer.step(batch_size)
if (batch_i + 1) * batch_size % 100 ==0:
ls.append(eval_loss()) # 打印结果和作图。
print('loss: %f, %f sec per epoch' % (ls[-1], time.time() - start))
gb.set_figsize()
gb.plt.plot(np.linspace(0, num_epochs, len(ls)), ls)
gb.plt.xlabel('epoch')
gb.plt.ylabel('loss') train_gluon('sgd',{'learning_rate':0.004,'momentum':0.9},features,labels)

动量法应用NASA测试不同飞机机翼噪音的更多相关文章
- NLP之基于Seq2Seq和注意力机制的句子翻译
Seq2Seq(Attention) @ 目录 Seq2Seq(Attention) 1.理论 1.1 机器翻译 1.1.1 模型输出结果处理 1.1.2 BLEU得分 1.2 注意力模型 1.2.1 ...
- NLP之基于Bi-LSTM和注意力机制的文本情感分类
Bi-LSTM(Attention) @ 目录 Bi-LSTM(Attention) 1.理论 1.1 文本分类和预测(翻译) 1.2 注意力模型 1.2.1 Attention模型 1.2.2 Bi ...
- 基于Seq2Seq和注意力机制的句子翻译
Seq2Seq(Attention) 目录 Seq2Seq(Attention) 1.理论 1.1 机器翻译 1.1.1 模型输出结果处理 1.1.2 BLEU得分 1.2 注意力模型 1.2.1 A ...
- NLP之基于Seq2Seq的单词翻译
Seq2Seq 目录 Seq2Seq 1.理论 1.1 基本概念 1.2 模型结构 1.2.1 Encoder 1.2.2 Decoder 1.3 特殊字符 2.实验 2.1 实验步骤 2.2 算法模 ...
- NLP之Bi-LSTM(在长句中预测下一个单词)
Bi-LSTM @ 目录 Bi-LSTM 1.理论 1.1 基本模型 1.2 Bi-LSTM的特点 2.实验 2.1 实验步骤 2.2 实验模型 1.理论 1.1 基本模型 Bi-LSTM模型分为2个 ...
- NLP之TextLSTM(预测单词下一个字母)
LSTM 目录 LSTM 1.理论 1.1 LSTM与RNN 1.1.1 RNN的缺点 1.1.2 LSTM 1.2 LSTM基本结构 2.实验 2.1 实验步骤 2.2 算法模型 1.理论 1.1 ...
- NLP之TextRNN(预测下一个单词)
TextRNN @ 目录 TextRNN 1.基本概念 1.1 RNN和CNN的区别 1.2 RNN的几种结构 1.3 多对多的RNN 1.4 RNN的多对多结构 1.5 RNN的多对一结构 1.6 ...
- NLP之基于TextCNN的文本情感分类
TextCNN @ 目录 TextCNN 1.理论 1.1 基础概念 最大汇聚(池化)层: 1.2 textCNN模型结构 2.实验 2.1 实验步骤 2.2 算法模型 1.理论 1.1 基础概念 在 ...
- 用javascript写星际飞机大战游戏
在github里看到了个不错的脚本游戏,决定亲自动手来写,效果如下 下面是代码的思路分享 把整个代码理解消化确实不容易,但是如果你坚持看完相信你一定会有收获 如果没兴趣可以直接点击下面的链接 复制代码 ...
随机推荐
- 一个骚气的前端JS代码生成网站
生成Javascript 颜文字代码 稍微试了试 原本的代码: alert("Hello, JavaScript") 转换后代码 ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`* ...
- spring-boot之简单定时任务
首先是pom.xml依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...
- crontab 设置服务器定期执行备份工作
基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...
- 希尔排序——Python实现
一.排序思想 希尔排序思想请参见:https://www.cnblogs.com/luomeng/p/10592830.html 二.python实现 def shellSort(arr): &quo ...
- sql left join 字符串
select * FROM table1 as t1 right join (select '1,2,3,4,5' as t) as tt on t1.Id=tt.t select * FROM t ...
- 转动的八卦图纯css实现
这类的东西网上一搜就是大把的,看着比较空旷的博客,所以自己也来写一个. <!DOCTYPE html> <html> <head> <meta chars ...
- Python基础-面向过程编程实现Linux下cat -rl ‘dir’ |grep ‘keywords’ 功能
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- MySQL数据库(1)----入门级操作
1.在服务器主机上以 root 用户登陆,创建位于其他客户端的新用户: mysql> CREATE USER 'newuser'@'192.168.1.109' IDENTIFIED BY 'p ...
- Shared Project
从VS2015开始支持Shared Project,挺好的,省去了单独引用的麻烦.
- C++ *this与this的区别(系个人转载,个人再添加相关内容)
转载地址:http://blog.csdn.net/stpeace/article/details/22220777 return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆 ...