## （一）神经网络入门之线性回归 转

AllenOR灵感

from __future__ import print_function

import numpy as np
import matplotlib.pyplot as plt

# 线性回归

• 一个非常简单的神经网络
• 一些概念，比如目标函数，损失函数
• 梯度下降

#### 定义目标函数

# Define the vector of input samples as x, with 20 values sampled from a uniform distribution
# between 0 and 1
x = np.random.uniform(0, 1, 20)

# Generate the target values t from x with small gaussian noise so the estimation won't be perfect.
# Define a function f that represents the line that generates t without noise
def f(x): return x * 2

# Create the targets t with some gaussian noise
noise_variance = 0.2 # Variance of the gaussian noise
# Gaussian noise error for each sample in x
noise = np.random.randn(x.shape[0]) * noise_variance
# Create targets t
t = f(x) + noise
# Plot the target t versus the input x
plt.plot(x, t, 'o', label='t')
# Plot the initial line
plt.plot([0, 1], [f(0), f(1)], 'b-', label='f(x)')
plt.xlabel('$x$', fontsize=15)
plt.ylabel('$t$', fontsize=15)
plt.ylim([0,2])
plt.title('inputs (x) vs targets (t)')
plt.grid()
plt.legend(loc=2)
plt.show()

#### 定义损失函数

nn(x, w)函数实现了神经网络模型，cost(y, t)函数实现了损失函数。

# Define the neural network function y = x * w
def nn(x, w): return x*w

# Define the cost function
def cost(y, t): return ((t - y) ** 2).sum()

cost vs weight

#### 优化损失函数

###### 梯度下降

Δw 完整推导

gradient(w, x, t)函数实现了梯度∂ξ/∂wdelta_w(w_k, x, t, learning_rate)函数实现了Δw

# define the gradient function. Remember that y = nn(x, w) = x * w
return 2 * x * (nn(x, w) - t)

# define the update function delta w
def delta_w(w_k, x, t, learning_rate):
return learning_rate * gradient(w_k, x, t).sum()

# Set the initial weight parameter
w = 0.1
# Set the learning rate
learning_rate = 0.1

# Start performing the gradient descent updates, and print the weights and cost:
w_cost = [(w, cost(nn(x, w), t))] # List to store the weight, costs values
for i in range(nb_of_iterations):
dw = delta_w(w, x, t, learning_rate) # Get the delta w update
w = w - dw # Update the current weight parameter
w_cost.append((w, cost(nn(x, w), t))) # Add weight, cost to list

# Print the final w, and cost
for i in range(0, len(w_cost)):
print('w({}): {:.4f} \t cost: {:.4f}'.format(i, w_cost[i][0], w_cost[i][1]))

# output
w(0): 0.1000   cost: 23.3917
w(1): 2.3556   cost: 1.0670
w(2): 2.0795   cost: 0.7324
w(3): 2.1133   cost: 0.7274
w(4): 2.1091   cost: 0.7273

# Plot the first 2 gradient descent updates
plt.plot(ws, cost_ws, 'r-')  # Plot the error curve
for i in range(0, len(w_cost)-2):
w1, c1 = w_cost[i]
w2, c2 = w_cost[i+1]
plt.plot(w1, c1, 'bo')
plt.plot([w1, w2],[c1, c2], 'b-')
plt.text(w1, c1+0.5, '$w({})$'.format(i))
# Show figure
plt.xlabel('$w$', fontsize=15)
plt.ylabel('$\\xi$', fontsize=15)
plt.grid()
plt.show()

###### 梯度更新

w = 0
for i in range(nb_of_iterations):
dw = delta_w(w, x, t, learning_rate)  # get the delta w update
w = w - dw  # update the current weight parameter
# Plot the fitted line agains the target line
# Plot the target t versus the input x
plt.plot(x, t, 'o', label='t')
# Plot the initial line
plt.plot([0, 1], [f(0), f(1)], 'b-', label='f(x)')
# plot the fitted line
plt.plot([0, 1], [0*w, 1*w], 'r-', label='fitted line')
plt.xlabel('input x')
plt.ylabel('target t')
plt.ylim([0,2])
plt.title('input vs. target')
plt.grid()
plt.legend(loc=2)
plt.show()

input vs. target

### AllenOR灵感

2018/05/10
0
0

来源：数据猿 作者：abby 　　目前，人工智能真可谓炙手可热的技术。AlphaGo完败李世乭的战绩宣告了人类智力最后的堡垒——围棋被攻破。大量资本涌入人工智能领域，大量人工智能明星企业...

2018/01/09
0
0
【备忘】2017年最新整理python神经网络深度学习算法全套视频教程

2017年最新整理python神经网络深度学习算法全套视频教程 课程介绍： 此阶段主要介绍了Python语言为工具对每种算法进行结合实例讲解，并使用Python中相关的package来对实际问题进行数据预处理...

qq_38155396
2017/07/01
0
0

Softmax分类函数 这篇教程是翻译Peter Roelants写的神经网络教程，作者已经授权翻译，这是原文。 该教程将介绍如何入门神经网络，一共包含五部分。你可以在以下链接找到完整内容。 （一）神经...

qq_37634812
2017/12/07
0
0

Jcme丶Ls
2017/06/07
0
0

tomcat启动问题

tomcat启动问题： 解决方法：tomcat bin目录下 新建setenv.sh文件 文件上加入 export CATALINA_OPTS='-Djava.awt.headless=true' 该方法对tomcat8以上有用...

west_coast
28分钟前
4
0
《从0开始学架构》学习笔记索引

whoru
41分钟前
2
0

43分钟前
1
0
Try .NET & Github Gist

Try .NET Try .NET 是微软最近推出的在线 C# 运行环境,不用安装 Visual Studio 等,就可以直接上手写 C# 代码. 可以先进来写两行代码看看 https://try.dot.net/ 对于初学者/代码分享而言是一个...

45分钟前
23
0
PyCharm入门教程——掌握PyCharm键盘快捷键

PyCharm最新版本下载 JetBrains PyCharm是一种Python IDE，其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外，该IDE提供了一些高级功能，以用于Django框架下的专业Web...

50分钟前
1
0