百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

深度学习深度学习(二十)-变量和数学计算

toyiye 2024-06-21 12:38 10 浏览 0 评论

和上一篇文章所说的常量(tf.constant)的使用场景不同,在很多的时候,我们最开始是无法给出一个初始值的,这个值必须后面(定义完模型后)动态赋上,这就要使用类似变量的功能--占位符。事实上,很多高级语言都会有变量,如变量x,我们会让变量有不同的类型,比如整形,字符串等等。但是很不幸,tensorflow不能直接使用这些变量,原因其实很简单,在tensorflow里头,实际是一个预定义模型,然后再进行大量计算的。所以,这也就是一系列的模型占位符,而这些占位符和传统的变量有一个很大的功能区别,就是这些占位符,不仅仅是后续代表一个具体的值,更重要的是,要用这个占位符去创建一个模型。

placeholer就是可以起到类似的作用,当然他和后面所说的真正的变量还是有区别的,这个一会说道变量的时候再说。

x = tf.placeholder(tf.string)
y = tf.placeholder(tf.int32)
z = tf.placeholder(tf.float32)with tf.Session() as sess:
 output = sess.run(x, feed_dict={x: 'Test String', y: 123, z: 45.67})

看,这既是占位符的定义方式,他是可以在后面session中在用字典方式给其赋值的。

和占位符类似,另外一个就是真正的变量了,和占位符不同,他的含义是,其值在训练过程中是不断变化的。

x = tf.Variable(5)

刚刚也说道,占位符很大一个作用是建立模型的,那么模型是什么呢,怎么建立?

说白了,模型就是一系列的数学式子,想必大家也俩想到了,这些式子是为了建立模型的,而不是在建立模型的那一句上直接运行的。所以,模型和占位符一样,模型中使用的所有数学运算都不能用高级语言直接的运算符号,因为那样就真的直接运算了,而不是建立模型,我们看看简单的:

x = tf.subtract(10, 4) # 6
y = tf.multiply(2, 5) # 10

这就是简单的加法和乘法,注意乘法是点积,不是矩阵乘法。

好变量有了,那对变量还有一类重要的操作,就是初始化,对于机器学习,尤其是对weight的初始化是尤其重要的,这个之前的文章详细描述过,不熟悉的同学,出门左转,记得看看。

init = tf.global_variables_initializer()
with tf.Session() as sess:
 sess.run(init)

上面tf.global_variables_initializer()是可以对全局的所有变量进行初始化的。

n_features = 120
n_labels = 5
weights = tf.Variable(tf.truncated_normal((n_features, n_labels)))

而这句话是可对变量进行“正规化”。

n_labels = 5
bias = tf.Variable(tf.zeros(n_labels))

这句话,可以赋予0这个初值。

我们来实际看个例子,训练线性预测的式子:Y=WX+B

这个例子是简化版的数字识别,值识别0到3的数据,使用的数据集还是著名的:MNIST数据集。

import tensorflow as tf

from tensorflow.examples.tutorials.mnist import input_data

from quiz import get_weights, get_biases, linear

def mnist_features_labels(n_labels):

mnist_features = []

mnist_labels = []

mnist = input_data.read_data_sets('/datasets/ud730/mnist', one_hot=True)

for mnist_feature, mnist_label in zip(*mnist.train.next_batch(10000)):

if mnist_label[:n_labels].any():

mnist_features.append(mnist_feature)

mnist_labels.append(mnist_label[:n_labels])

return mnist_features, mnist_labels

# 输入的特征 (28*28 的图片特征输入就有784个features)

n_features = 784

# 结果的特征词数量

n_labels = 3

# 定义输入输出

features = tf.placeholder(tf.float32)

labels = tf.placeholder(tf.float32)

# 定义要学习的Weights and Biases

w = get_weights(n_features, n_labels)

b = get_biases(n_labels)

# 线性方程 xW + b,这个就是模型啦

logits = linear(features, w, b)

# 获取训练数据

train_features, train_labels = mnist_features_labels(n_labels)

with tf.Session() as session:

session.run(tf.global_variables_initializer())

# Softmax,作为输出结果的activation function

prediction = tf.nn.softmax(logits)

# 计算交叉熵作为lost function

cross_entropy = -tf.reduce_sum(labels * tf.log(prediction), reduction_indices=1)

# 计算loss

loss = tf.reduce_mean(cross_entropy)

# 梯度下降的比率

learning_rate = 0.08

# 进行梯度下降计算

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

# 开始真正计算

_, l = session.run(

[optimizer, loss],

feed_dict={features: train_features, labels: train_labels})

# 打印出损失值

print('Loss: {}'.format(l))

这还不算是真正的训练实操,只是逐步说明了tensorflow的基本操作原理。

后面会慢慢的给上实际的操作,当然一直到CNN为止。

机器学习实操和理论都是同等重要的,所以,如果入门的同学,还是希望能关注头条号,从一开始的第一篇开始,基本的原理基础还是非常重要的。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码