时间:2021-05-22
TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本.
TensorFlow支持python和c/c++语言, 可以在cpu或gpu上进行运算, 支持使用virtualenv或docker打包发布.
定义变量
为了使用tensorflow,首先我们需要导入它
import tensorflow as tf对于符号变量,我们新建一个
x = tf.placeholder(tf.float32, [None, 784])这里x并不是一个特定的值,只是一个占位符,后面我们需要用tensorflow进行计算式,我们会把它作为输入
在模型中,我们需要weights权重和biases偏置,这里就用Variable来处理定义,Variable可以在整个计算过程中modified
w = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))在新建Variable的同时,我们也初始化了它,然后
y = tf.nn.softmax(tf.matmul(x, w) + b)这样我们就成功的实现了我们的模型
训练
我们用cross-entropy作为我们的cost function
H_{y'}(y) = -\sum_i y'_i \log(y_i)
y就是我们预测的概率分布,y'是真实的概率分布
为了实现交叉熵,我们需要一个新的占位符来作为正确答案的输入
y_ = tf.placeholder(tf.float32, [None, 10])cross_entropy = -tf.reducen_sum(y_ * tf.log(y))通过梯度下降来实现优化模型
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)我们使用这个模型之前,最后一件我们需要做的事是
init = tf.initialize_all_variables()with tf.Session() as sess: sess.run(init)现在,我能可以训练1000次这个模型了,☺️
for i in xrange(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict = {x: batch_xs, y_: batch_ys})使用随机数据的小batch就称为随机训练
模型评分
首先,我们对比真实的y_和模型所得y之间正确的个数有多少
correct_prediction = tf.equal(tf.argmax(y, 1), tf.agrmax(y_, 1))这个会返回一个boolean列表,比如[True, False, True, True]
accuracy = tf.reduce_mean(tf.cast(correc_prediction, tf.float32))print (sess.run(accuracy, feed_dict = {x: mnist.test.images, y_: minst.test.labels}))最后就通过以上计算得到准确率
开始使用
TensorFlow并不是一个纯粹的神经网络框架, 而是使用数据流图进行数值分析的框架.
TensorFlow使用有向图(graph)表示一个计算任务.图的节点称为ops(operations)表示对数据的处理,图的边flow 描述数据的流向.
该框架计算过程就是处理tensor组成的流. 这也是TensorFlow名称的来源.
TensorFlow使用tensor表示数据. tensor意为张量即高维数组,在python中使用numpy.ndarray表示.
TensorFlow使用Session执行图, 使用Variable维护状态.tf.constant是只能输出的ops, 常用作数据源.
下面我们构建一个只有两个constant做输入, 然后进行矩阵乘的简单图:
from tensorflow import Session, device, constant, matmul'''构建一个只有两个constant做输入, 然后进行矩阵乘的简单图:'''#如果不使用with session()语句, 需要手动执行session.close().#with device设备指定了执行计算的设备:# "/cpu:0": 机器的 CPU.# "/gpu:0": 机器的第一个 GPU, 如果有的话.# "/gpu:1": 机器的第二个 GPU, 以此类推.with Session() as session: # 创建执行图的上下文 with device('/cpu:0'): # 指定运算设备 mat1 = constant([[3, 3]]) # 创建源节点 mat2 = constant([[2], [2]]) product = matmul(mat1, mat2) # 指定节点的前置节点, 创建图 result = session.run(product) # 执行计算 print(result)以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在上一篇文章tensorflow入门:tfrecord和tf.data.TFRecordDataset的使用里,讲到了使用如何使用tf.data.TFRecor
前面两讲《C++11并发指南二(std::thread详解)》,《C++11并发指南三(std::mutex详解)》分别介绍了std::thread和std::
很多正在入门或刚入门TensorFlow机器学习的同学希望能够通过自己指定图片源对模型进行训练,然后识别和分类自己指定的图片。但是,在TensorFlow官方入
由于最近学习tensorflow的需要,tensorflow是在Linux环境下,使用的是Python。为了方便程序的调试,尝试在Windows下的Pychar
本文实例为大家分享了tensorflow实现弹性网络回归算法,供大家参考,具体内容如下python代码:#用tensorflow实现弹性网络算法(多变量)#使用