如何通过Tensorflow搭建一个神经网络
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,今天小编给大家分享一下如何通过Tensorflow搭建一个神经网络的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获
千家信息网最后更新 2025年02月02日如何通过Tensorflow搭建一个神经网络
今天小编给大家分享一下如何通过Tensorflow搭建一个神经网络的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
一、Tensorlow结构
import tensorflow as tfimport numpy as np #创建数据x_data = np.random.rand(100).astype(np.float32)y_data = x_data*0.1+0.3 #创建一个 tensorlow 结构weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))#一维,范围[-1,1]biases = tf.Variable(tf.zeros([1])) y = weights*x_data + biases loss = tf.reduce_mean(tf.square(y - y_data))#均方差函数 #建立优化器,减少误差,提高参数准确度,每次迭代都会优化optimizer = tf.train.GradientDescentOptimizer(0.5)#学习率为0.5(<1)train = optimizer.minimize(loss)#最小化损失函数 #初始化不变量init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) #train for step in range(201): sess.run(train) if step % 20 == 0: print(step, sess.run(weights), sess.run(biases))
二、session的使用
import tensorflow as tf matrix1 = tf.constant([[3, 3]])matrix2 = tf.constant([[2], [2]]) product = tf.matmul(matrix1, matrix2) #method1sess = tf.Session()result2 = sess.run(product)print(result2) #method2# with tf.Session() as sess:# result2 = sess.run(product)# print(result2)
三、Variable的使用
import tensorflow as tf state = tf.Variable(0, name = 'counter')#变量初始化# print(state.name)one = tf.constant(1)new_value = tf.add(state, one)#将state用new_value代替updata = tf.assign(state, new_value) #变量激活init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) for _ in range(3): sess.run(updata) print(sess.run(state))
四、placeholder的使用
#给定type,tf大部分只能处理float32数据input1 = tf.placeholder(tf.float32)input2 = tf.placeholder(tf.float32) output = tf.multiply(input1, input2) with tf.Session() as sess: print(sess.run(output, feed_dict={input1:[7.], input2:[2.]}))
五、激活函数 六、添加层
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt def add_layer(inputs, in_size, out_size, activation_function = None): Weights = tf.Variable(tf.random_normal([in_size, out_size]))#正态分布 biases = tf.Variable(tf.zeros([1, out_size])+0.1) #1行,out_size列,初始值不推荐为0,所以加上0.1 Wx_plus_b = tf.matmul(inputs, Weights) + biases #Weights*x+b的初始化值,也是未激活的值 #激活 if activation_function is None: #如果没有设置激活函数,,则直接把当前信号原封不动的传递出去 outputs = Wx_plus_b else: #如果设置了激活函数,则由此激活函数对信号进行传递或抑制 outputs = activation_function(Wx_plus_b) return outputs
七、创建一个神经网络
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt def add_layer(inputs, in_size, out_size, activation_function = None): Weights = tf.Variable(tf.random_normal([in_size, out_size]))#正态分布 biases = tf.Variable(tf.zeros([1, out_size])+0.1) #1行,out_size列,初始值不推荐为0,所以加上0.1 Wx_plus_b = tf.matmul(inputs, Weights) + biases #Weights*x+b的初始化值,也是未激活的值 #激活 if activation_function is None: #如果没有设置激活函数,,则直接把当前信号原封不动的传递出去 outputs = Wx_plus_b else: #如果设置了激活函数,则由此激活函数对信号进行传递或抑制 outputs = activation_function(Wx_plus_b) return outputs """定义数据形式"""#创建一列(相当于只有一个属性值),(-1,1)之间,有300个单位,后面是维度,x_data是有300行x_data = np.linspace(-1, 1, 300)[:, np.newaxis]#np.linspace在指定间隔内返回均匀间隔数字#加入噪声,均值为0,方差为0.05,形状和x_data一样noise = np.random.normal(0, 0.05, x_data.shape)#定义y的函数为二次曲线函数,同时增加一些噪声数据y_data = np.square(x_data) - 0.5 + noise #定义输入值,输入结构的输入行数不固定,但列就是1列的值xs = tf.placeholder(tf.float32, [None, 1])ys = tf.placeholder(tf.float32, [None, 1]) """建立网络"""#定义隐藏层,输入为xs,输入size为1列,因为x_data只有一个属性值,输出size假定有10个神经元的隐藏层,激活函数relul1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)#定义输出层,输出为l1输入size为10列,也就是l1的列数,输出size为1,这里的输出类似y_data,因此为1列prediction = add_layer(l1, 10, 1,activation_function=None) """预测"""#定义损失函数为差值平方和的平均值loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1])) """训练"""#进行逐步优化的梯度下降优化器,学习率为0.1,以最小化损失函数进行优化train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#初始化模型所有参数init = tf.global_variables_initializer() #可视化with tf.Session() as sess: sess.run(init) for i in range(1000):#学习1000次 sess.run(train_step, feed_dict={xs:x_data, ys:y_data}) if i%50==0: print(sess.run(loss, feed_dict={xs:x_data, ys:y_data}))
八、可视化
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt def add_layer(inputs, in_size, out_size, activation_function = None): Weights = tf.Variable(tf.random_normal([in_size, out_size]))#正态分布 biases = tf.Variable(tf.zeros([1, out_size])+0.1) #1行,out_size列,初始值不推荐为0,所以加上0.1 Wx_plus_b = tf.matmul(inputs, Weights) + biases #Weights*x+b的初始化值,也是未激活的值 #激活 if activation_function is None: #如果没有设置激活函数,,则直接把当前信号原封不动的传递出去 outputs = Wx_plus_b else: #如果设置了激活函数,则由此激活函数对信号进行传递或抑制 outputs = activation_function(Wx_plus_b) return outputs """定义数据形式"""#创建一列(相当于只有一个属性值),(-1,1)之间,有300个单位,后面是维度,x_data是有300行x_data = np.linspace(-1, 1, 300)[:, np.newaxis]#np.linspace在指定间隔内返回均匀间隔数字#加入噪声,均值为0,方差为0.05,形状和x_data一样noise = np.random.normal(0, 0.05, x_data.shape)#定义y的函数为二次曲线函数,同时增加一些噪声数据y_data = np.square(x_data) - 0.5 + noise #定义输入值,输入结构的输入行数不固定,但列就是1列的值xs = tf.placeholder(tf.float32, [None, 1])ys = tf.placeholder(tf.float32, [None, 1]) """建立网络"""#定义隐藏层,输入为xs,输入size为1列,因为x_data只有一个属性值,输出size假定有10个神经元的隐藏层,激活函数relul1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)#定义输出层,输出为l1输入size为10列,也就是l1的列数,输出size为1,这里的输出类似y_data,因此为1列prediction = add_layer(l1, 10, 1,activation_function=None) """预测"""#定义损失函数为差值平方和的平均值loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1])) """训练"""#进行逐步优化的梯度下降优化器,学习率为0.1,以最小化损失函数进行优化train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#初始化模型所有参数init = tf.global_variables_initializer() #可视化with tf.Session() as sess: sess.run(init) fig = plt.figure()#先生成一个图片框 #连续性画图 ax = fig.add_subplot(1, 1, 1)#编号为1,1,1 ax.scatter(x_data, y_data)#画散点图 #不暂停 plt.ion()#打开互交模式 # plt.show() #plt.show绘制一次就暂停了 for i in range(1000):#学习1000次 sess.run(train_step, feed_dict={xs:x_data, ys:y_data}) if i%50==0: try: #画出一条后,抹除掉,去除第一个线段,但是只有一个相当于抹除当前线段 ax.lines.remove(lines[0]) except Exception: pass prediction_value = sess.run(prediction, feed_dict={xs:x_data}) lines = ax.plot(x_data,prediction_value,'r-',lw=5)#lw线宽 #暂停 plt.pause(0.5)
以上就是"如何通过Tensorflow搭建一个神经网络"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
函数
激活
输入
输出
信号
数据
学习
神经
网络
只有
损失
噪声
属性
知识
篇文章
结构
神经网络
最小
原封不动
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
衢州制造软件开发
汕尾软件开发公司找哪家
小型企业网络技术路线
查询到另一数据库
网络安全的讲课评价
服务器安全狗 屏蔽ip
数据库增添删除修改哪个难
数据库基础与应用考试
java管理服务器
网络安全公益征集视频自拍
execsql数据库
戴尔服务器手册中文版
游戏软件开发客户答谢
四川视频会议服务器怎么安装
数据库如何改字段
服务器与主机的区别
三原软件开发有限公司
数据库本地临时表
怎么下载网易服务器
数据库导出dmp
服务器 思维导图
数据库show
扫码观看的视频服务器资源
长城超云服务器bmcip
微视频互联网科技有限公司
软件开发流程与实践
软件开发功能偏差
数据库必须遵循的规则
软件开发abc协作
怎么用数据库打开mdf