B站tensorflow机器学习

机器学习 y=x^2

from __future__ import print_function
import tensorflow as tf
import numpy as np


def add_layer(inputs, in_size, out_size, activation_function=None):
    # add one more layer and return the output of this layer
    Weights = tf.Variable(tf.random_normal([in_size, out_size]))
    biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
    Wx_plus_b = tf.matmul(inputs, Weights) + biases
    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)
    return outputs


# Make up some real data  -1 to 1 num=300 newaxis
#增加一个维度 [nweaxis, :]增加行维度 [:, newaxis]增加列维度
x_data = np.linspace(-1, 1, 300)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape)
# 构建所需的数据。 这里的x_data和y_data并不是严格的一元二次函数的关系,因为我们多加了一个noise,这样看起来会更像真实情况。
y_data = np.square(x_data) - 0.5 + noise

# define placeholder for inputs to network 这里的None代表无论输入有多少都可以,因为输入只有一个特征,所以这里是1。
xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1])
# add hidden layer
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
# add output layer
prediction = add_layer(l1, 10, 1, activation_function=None)

# the error between prediction and real data
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()
sess = tf.Session()
sess.run(init)

for i in range(1000):
    # training
    sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
    if i % 50 == 0:
        # to see the step improvement
        print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))

张量理解

https://www.cnblogs.com/abella/p/10142935.html

函数学习

tf.Variable

	{
			initial_value,     	 初始化的值
			trainable=True,		 如果为True,才能对它使用Optimizer
		    collections=None,    指定该图变量的类型
		    validate_shape=True, 如果为False,则不进行类型和维度检查
		    name=None            变量的名称,如果没有指定则系统会自动分配一个唯一的值
	}	

tf.random_normal

{
	shape,            输出张量的形状,必选
    mean=0.0,         正态分布的均值,默认为0
	stddev=1.0,       正态分布的标准差,默认为1.0
	dtype=tf.float32, 输出的类型,默认为tf.float32
	seed=None,        随机数种子,是一个整数,当设置之后,每次生成的随机数都一样
	name=None         操作的名称
}
EX tf.random_normal([2, 3], stddev=1, seed=1)  两行三列 方差为1 随机种子数为1(可省略)
pycharm

data两行三列 方差为1 随机种子数为1(可省略)
在这里插入图片描述

 data数据声明后没有赋值  执行sess.run(init) 后才赋值 .
 
 tf中张量与常规向量不同的是执行"print data"输出的是data的形状和数据类型等属性信息,
 获取 data的值需要调用sess.run(w1)方法。
 
 随机种子的含义,seed的每个值对应一组随机数,用相同的种子产生的随机数相同

tf.matmul(x,y) 与tf.multiply(x1,y1)

multiply() 矩阵点乘        
matmul() 矩阵乘法 a(1,1) = 第一行点乘以第一列

np.linspace(-1,1,300) =[-1,1) 300个数

tf.placeholder() 占位符

{
	dtype, 数据类型  (常用 tf.float32)
	shape, 数据size
	name, 
}
运行模型的时候通过feed_dict()函数向占位符喂入数据。
sess.run(train_step, feed_dict={xs: x_data, ys: y_data})

代码基于莫烦python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值