首先,我将与您分享工程师教授的教程。等待。最后,感谢收看!
#!/usr/bin/env .6
# -*- : utf-8 -*-
#获取
作为 tf
numpy 作为 np
。作为plt
#实用numpy在-0.5和0.5之间生成200个均匀分布的样本点,[:,np.]将一行转换为200行一列
= np.(-0.5,0.5,10)[:,np.]
#noise 是随机生成的
噪声 = np..(0,0.02,.shape)
= np.() + 噪声
#定义两个,[None,1]定义形状,无行未定义,1列
x = tf.(tf .,[None,1])
y = tf.(tf.,[None,1])
#构建一个简单的神经网络,输入一个X,通过神经网络计算出一个y,希望预测值和实际值接近,说明网络构建成功。
#定义神经网络中间层的权重,形状为一行10列,1代表一个输入,中间层有10个神经元
p>
= tf.(tf.([1,10]))
#偏置值初始化为0
= tf.(tf.zeros([1 ,10]))
# x 输入,所有矩阵,偏差值
= tf.(x,) +
#L1中间层输出,激活函数tanh,中间层输出
L1 = tf.nn.tanh()
#输出层
= tf.(tf.([ 10, 1]))
= tf.(tf.zeros([1, 1]))
#信号的总和,上一层的输出就是下一层Input的输出
= tf.(L1, ) +
# 通过激活函数
= tf.nn.tanh()
#二次成本函数
损失 = tf.(tf.(y-))
#实用的梯度下降训练
= tf.train. izer(0.1).(损失)
使用 tf.() 作为 sess:
#变量初始化
sess.run(tf.())
#培训
for _ in range(2000):
sess.run(, ={x: , y: })
#得到预测值
= sess.run(,={x:})
#绘图显示
plt.()
plt.(,)
plt.plot(,,’r-‘,lw =5)#红色实线,线宽为5
plt.show()
运行结果展示:
MNIST手写数字数据集下载地址:
train–idx3-ubyte.gz:训练集数据
train–idx1-ubyte.gz : 训练集标签
t10k–idx3-ubyte.gz:测试集数据
t10k–idx1-ubyte.gz: 测试集标签
下载的数据集分为两部分:60000行训练数据集(mnist.train)和10000行测试数据集(mnist.test)都是手写数字
每张图片包含28*28个像素,我们把这个数组展开成一个向量,长度为28*28=784.因此,在MNIST训练数据集mnist.train.中,一个形状为[ 60000,784]一个张量,第一维数用于对图像进行索引,第二维数用于识别每个图像中的像素。图像中一个像素的强度值在0-1之间
代码
# : utf-8
#In[2]:
作为 tf
来自…mnist
#In[3]:
#加载数据集,加入数据集,路径为当前路径,数据集将从网上下载,
# =True 将标签转换为只有0.1的格式,一位为1,其他位为0
mnist = .(“”, =True)
#每个batch的大小,在训练模型的时候,不是一个一个,而是一次100个batch,也就是一次放100张图片,矩阵形式
= 100
# 计算总共有多少批次
= mnist.train。 // #//代表整体的意思。
#定义两个,None代表任意值,一会儿就变成100,784=28*28
x = tf.(tf., [None, 784])
#从0到9的数字,一共10个数字
y = tf.(tf., [None, 10])
p>
#这里创建一个简单的神经网络,一共2层,即输入层和输出层,没有隐藏层
# #输出一共10个数字,即10个
## W,
W = tf.(tf.zeros([784, 10]))
#偏差值
b = tf.(tf.zeros([10]))
#偏差值
= tf.nn.(tf.(x, W) + b)
#二次成本函数
损失 = tf.(tf.(y – ))
#使用梯度下降,0.2的学习率,最小化损失
= tf.train.izer(0.2).(loss)
#初始化变量
init = tf.()
# 结果存储在布尔列表中
#测试聚类的准确率,equal比较两个参数的大小,相同为真,差为假,(y,1)求两个值的最大值
#tf.(y,1) , 为 0 或为 1 , 如果为 1 则范围 1 的位置
#tf.(,1)
#结果存储在布尔列表中,预测值与实际值进行比较
= tf.equal(tf.(y, 1), tf.(, 1)) # 返回一维张量中最大值的位置
#求准确率
#cast 比较预测,格式化预测结果,将bool类型转换为类型,然后计算平均值
=tf. (tf.cast(, tf.))
使用 tf.() 作为 sess:
sess.run(init)
for epoch in range(21):#迭代21个周期,所有图片循环21次
对于范围内的批处理():
, = mnist.train.()
sess.run(, ={x: , y: })
acc = sess.run(, ={x: mnist.test., y: mnist.test.})
print(“Iter” + str(epoch) + “, ” + str(acc))
#In[]:
运行结果展示:
[@ ~]$ .6 MNIST.py
/home///lib/.6/site-/h5py/.py:36: : 从 `float` 到 `np.` 是 .在 中,它将为 `np. == np.dtype(float).type`.
从 ._conv 作为
::From MNIST.py:12: (from ..learn..learn..mnist) 现在和将来都在一个 .
为:
使用 /mnist/.py 等 /.
::From /home///lib/.6/site-///learn//learn//mnist.py:260: (来自 ..learn..learn..base )现在和将来一个。
为:
编写你自己的逻辑。
::From /home///lib/.6/site-///learn //learn//mnist.py:262: (from ..learn..learn..mnist) 是并且将会在一个。
为:
为此使用 tf.data。
/train–idx3-ubyte.gz
::From /home///lib/.6/site-///learn//learn// mnist.py:267: (from ..learn..learn..mnist) 是并且将会在一个。
为:
为此使用 tf.data。
为:
为此使用 tf.data。
p>
/train–idx1-ubyte.gz
::From /home///lib/.6/site-///learn//learn//mnist.py:110 : (from ..learn..learn..mnist) 将在一个。
为:
使用 tf.上。
/t10k –idx3-ubyte.gz
/t10k–idx1-ubyte.gz
::来自 /home///lib/.6/site-///learn/ /learn//mnist.py:290: 。 (来自 ..learn..learn..mnist)现在和将来都在一个 .
为:
使用如/mnist/.py from /.
2018-11-06 09:07:50.: I /core//:69] 带有互操作的新池:2. 优化使用以获得最佳效果。
迭代 0,0.8301
迭代 1,0.8708
第 2 章,0.8809
迭代 3,0.8875
迭代 4,0.894
第 5 次,0.8969
Iter 6,0.8988
第 7 次,0.9015
Iter 8,0.9037
第 9 次,0.9051
迭代 10,0.9062
迭代 11,0.9073
Iter 12,0.9077
Iter 13,0.9088
Iter 14,0. 9096
Iter 15,0.9107
Iter 16,0.9113
第 17 节,0.9128
Iter 18,0.9125
第 19 次,0.9134
Iter 20,0.9141
[@ ~]$ ls
MNIST.py
[@~]$ ls /
a.sh t10k–idx3-ubyte .gz t10k–idx1-ubyte.gz train–idx3-ubyte.gz train–idx1-ubyte.gz
[@~]$
暂无评论内容