# 零基础入门机器学习-tensorflow（四）

# 引入tensorflow、numpy和matplotlib库

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

# 获取数据

data = np.genfromtxt('/Users/Bruce/Desktop/PM25.csv', dtype=float, delimiter=',', skip_header=1)

x_data = np.array([x[0] for x in data])[:, np.newaxis]

y_data = np.array([y[13] for y in data])[:, np.newaxis]

# 绘图，绘出训练数据

fig = plt.figure()

ax.scatter(x_data, y_data)

plt.show()

print(x_data)

print("----------------------")

print(y_data)

# 引入tensorflow、numpy和matplotlib库

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

# 获取数据

data = np.genfromtxt('/Users/Bruce/Desktop/PM25.csv', dtype=float, delimiter=',', skip_header=1)

x_ = np.array([x[0] for x in data])[:, np.newaxis]

# 数据归一化

amin, amax = x_.min(), x_.max()

# 求最大最小值

x_data = (x_ - amin)/(amax - amin)

y_data = np.array([y[13] for y in data])[:, np.newaxis]

# 绘图，绘出训练数据

fig = plt.figure()

ax.scatter(x_data, y_data)

plt.show()

print(x_data)

print("----------------------")

print(y_data)

#输入层

xs = tf.placeholder(tf.float32, [None, 1]) #占位符，None表示n*1维矩阵

ys = tf.placeholder(tf.float32, [None, 1]) #占位符，None表示n*1维矩阵

#隐层（200个神经元）

W1 = tf.Variable(tf.random_normal([1,200])) #权重，1*200的矩阵，并用符合正态分布的随机数填充

b1 = tf.Variable(tf.zeros([1,200]) + 0.1) #偏置，1*200的矩阵，使用0.1填充

Wx_plus_b1 = tf.matmul(xs,W1) + b1 #矩阵xs和W1相乘，然后加上偏置

output1 = tf.nn.sigmoid(Wx_plus_b1) #激活函数使用tf.nn.sigmoid

#输出层

W2 = tf.Variable(tf.random_normal([200,1])) #权重，200*1的矩阵，并用符合正态分布的随机数填充

b2 = tf.Variable(tf.zeros([1])+0.1) # 偏置，使用0.1填充

Wx_plus_b2 = tf.matmul(output1,W2) + b2

output2 = Wx_plus_b2 # 输出层不使用激活函数

#损失

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-output2),reduction_indices=[1])) #在第一维上，偏差平方后求和，再求平均值，来计算损失

# 引入tensorflow、numpy和matplotlib库

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

# 获取数据

data = np.genfromtxt('/Users/Bruce/Desktop/PM25.csv', dtype=float, delimiter=',', skip_header=1)

x_ = np.array([x[0] for x in data])[:, np.newaxis]

# 数据归一化

amin, amax = x_.min(), x_.max()

# 求最大最小值

x_data = (x_ - amin)/(amax - amin)

y_data = np.array([y[13] for y in data])[:, np.newaxis]

# 绘图，绘出训练数据

fig = plt.figure()

ax.scatter(x_data, y_data)

plt.ion()plt.show()

#输入层

xs = tf.placeholder(tf.float32, [None, 1]) #占位符，None表示n*1维矩阵

ys = tf.placeholder(tf.float32, [None, 1]) #占位符，None表示n*1维矩阵

#隐层（200个神经元）

W1 = tf.Variable(tf.random_normal([1,200])) #权重，1*200的矩阵，并用符合正态分布的随机数填充

b1 = tf.Variable(tf.zeros([1,200]) + 0.1) #偏置，1*200的矩阵，使用0.1填充

Wx_plus_b1 = tf.matmul(xs,W1) + b1 #矩阵xs和W1相乘，然后加上偏置

output1 = tf.nn.sigmoid(Wx_plus_b1) #激活函数使用tf.nn.sigmoid

#输出层

W2 = tf.Variable(tf.random_normal([200,1])) #权重，200*1的矩阵，并用符合正态分布的随机数填充

b2 = tf.Variable(tf.zeros([1])+0.1) # 偏置，使用0.1填充

Wx_plus_b2 = tf.matmul(output1,W2) + b2

output2 = Wx_plus_b2 # 输出层不使用激活函数

#损失

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-output2),reduction_indices=[1])) #在第一维上，偏差平方后求和，再求平均值，来计算损失

#初始化

init = tf.global_variables_initializer() #初始化所有变量

sess = tf.Session()

sess.run(init) #变量初始化

#训练

for i in range(5001): #训练10000次

_,loss_value = sess.run([train_step,loss],feed_dict=) #进行梯度下降运算，并计算每一步的损失

if(i%20==0):

print("第%d步，loss_value = %f" % (i,loss_value)) # 每50步输出一次损失

try:

ax.lines.remove(lines[0]) # 在每一次绘图之前先讲上一次绘图删除

except Exception:

pass

lines = ax.plot(x_data, sess.run(output2, feed_dict=), 'r-') plt.pause(0.1)

sess.close()

• 发表于:
• 原文链接http://kuaibao.qq.com/s/20180419G1QDT700?refer=cp_1026
• 腾讯「云+社区」是腾讯内容开放平台帐号（企鹅号）传播渠道之一，根据《腾讯内容开放平台服务协议》转载发布内容。
• 如有侵权，请联系 yunjia_community@tencent.com 删除。

2021-05-12

2018-07-02

2018-05-29

2018-05-24

2018-05-14

2018-05-09

2021-05-12