当前位置: 首页 > article >正文

【神经网路】tensorflow实验6--TensorFlow基础

目录

1. 实验目的

2. 实验内容

3. 实验过程

题目一:

① 代码

② 实验结果

题目二:

① 代码

② 实验结果

拓展题(选做):

① 代码

② 实验结果

4. 实验小结


1. 实验目的

掌握TensorFlow低阶API,能够运用TensorFlow处理数据以及对数据进行运算

2. 实验内容

①改变张量形状、维度变换和部分采样等

②张量加减乘除、幂指对数、多维向量乘法等运算

③使用TensorFlow求取张量在某个维度上或者全局的统计值

3. 实验过程

题目一:

使用TensorFlow张量运算计算wb,并输出结果。

已知: 

x=[ 64.3, 99.6, 145.45, 63.75, 135.46, 92.85, 86.97, 144.76, 59.3, 116.03]

y=[ 62.55, 82.42, 132.62, 73.31, 131.05, 86.57, 85.49, 127.44, 55.25, 104.84]

计算:

其中分别为xy的均值,x中索引值为i的元素,y中索引值为i的元素。

(3)分别输出wb的结果。

提示:正确的输出结果为w=0.83215  b=10.2340

 代码

# x=[ 64.3, 99.6, 145.45, 63.75, 135.46, 92.85, 86.97, 144.76, 59.3, 116.03]

# y=[ 62.55, 82.42, 132.62, 73.31, 131.05, 86.57, 85.49, 127.44, 55.25, 104.84]

# 计算:

#

# 其中,xi是x中索引值为i的元素;yi是y中索引值为i的元素;n是张量中元素的个数。

# (3)分别输出W和b的结果。

import tensorflow as tf

import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

x = (64.3, 99.6, 145.45, 63.75, 135.46, 92.85, 86.97, 144.76, 59.3, 116.03)

y = (62.55, 82.42, 132.62, 73.31, 131.05, 86.57, 85.49, 127.44, 55.25, 104.84)

x = tf.constant(x)  #创建x张量

y = tf.constant(y)  #创建y张量

def count_const():

    sum1 = 0

    sum2 = 0

    for i in range(0, 10):

        sum1 += (x[i] - tf.reduce_mean(x))*(y[i] - tf.reduce_mean(y))

        sum2 += (x[i] - tf.reduce_mean(x))*(x[i] - tf.reduce_mean(x))

    return  sum1/sum2

if __name__ == '__main__':

    x = (64.3, 99.6, 145.45, 63.75, 135.46, 92.85, 86.97, 144.76, 59.3, 116.03)

    y = (62.55, 82.42, 132.62, 73.31, 131.05, 86.57, 85.49, 127.44, 55.25, 104.84)

    x = tf.constant(x)  # 创建x张量

    y = tf.constant(y)  # 创建y张量

    w = count_const()

    b = tf.reduce_mean(y) - w*tf.reduce_mean(x)

    print('w的值是:'+str(w))

    print('b的值是:'+str(b))

② 实验结果

题目二:

使用TensorFlow张量运算计算wb,并输出结果。

已知: 

x=[ 64.3, 99.6, 145.45, 63.75, 135.46, 92.85, 86.97, 144.76, 59.3, 116.03]

y=[ 62.55, 82.42, 132.62, 73.31, 131.05, 86.57, 85.49, 127.44, 55.25, 104.84]

计算:

其中,xix中索引值为i的元素;yiy中索引值为i的元素;n是张量中元素的个数。

(3)分别输出wb的结果。

 代码

import tensorflow as tf

import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

if __name__ == '__main__':

    x = (64.3, 99.6, 145.45, 63.75, 135.46, 92.85, 86.97, 144.76, 59.3, 116.03)

    y = (62.55, 82.42, 132.62, 73.31, 131.05, 86.57, 85.49, 127.44, 55.25, 104.84)

    x = tf.constant(x)  # 创建x张量

    y = tf.constant(y)  # 创建y张量

    n = int(tf.size(x))  # 求n的值

    sum_xy = 0

    sum_xx = 0

    for i in range(10):

        sum_xx += x[i]*x[i]

        sum_xy += x[i]*y[i]

    sum1 = (n*sum_xy)-(tf.reduce_sum(x)*tf.reduce_sum(y))

    sum2 = (n*sum_xx)- (tf.reduce_sum(x)*tf.reduce_sum(x))

    w = sum1/sum2

    b = (tf.reduce_sum(y) - w*tf.reduce_sum(x))/n

    print('w的值是:' + str(w))

    print('b的值是:' + str(b))

 实验结果

拓展题(选做):

在题目二的基础上,已知x、y、w、b,计算L的值并输出结果。

其中,xix中索引值为i的元素;yiy中索引值为i的元素;n是张量中元素的个数

(2)输出L的值

提示:

L= -9.918....e-06

 代码

import tensorflow as tf

import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

def count_L(w,b):

    W_x = tf.multiply(w, x)  # w*xi

    W_x_b = tf.add(b, W_x)  # w*xi+b

    w_x_b_y = tf.subtract(W_x_b, y)  # w*xi+b-yi

    sum_l = tf.reduce_sum(w_x_b_y)  # 求和w*xi+b-yi

    sum_l = sum_l / n

    return sum_l

if __name__ == '__main__':

    x = (64.3, 99.6, 145.45, 63.75, 135.46, 92.85, 86.97, 144.76, 59.3, 116.03)

    y = (62.55, 82.42, 132.62, 73.31, 131.05, 86.57, 85.49, 127.44, 55.25, 104.84)

    x = tf.constant(x)

    y = tf.constant(y)

    n = int(tf.size(x))   #n的值

    sum_x = tf.reduce_sum(x)

    sum_y = tf.reduce_sum(y)

    sum_x2 = tf.reduce_sum(x*x)

    sum_xy = tf.reduce_sum(x*y)

    w = ((n*sum_xy)-(sum_x*sum_y))/((n*sum_x2)-(sum_x*sum_x))

    b = (sum_y-(w*sum_x))/n

    print(count_L(w,b))

 实验结果

4. 实验小结

① 实验过程中遇到了哪些问题,你是如何解决的?

对张量计算中的函数运用不熟练,使得函数看起来很复杂,最后使用了张量计算函数之后是的函数简洁明了。

② TensorFlow和Numpy都可以对多维数组进行运算,他们各自的特点是什么?

相同点: 都提供n位数组

不同点: numpy支持ndarray,而Tensorflow里有tensor;

numpy不提供创建张量函数和求导,也不提供GPU支持。

③ 在题目基本要求的基础上,你对每个题目做了那些扩展和提升?或者你觉得在编程实现过程中,还有哪些地方可以进行优化?(可以从如何提高代码的简洁度来谈谈这个问题)

张量计算有着专门的函数,张量函数可以使得代码更简单,可以更加快速的得到想要的值。


http://www.kler.cn/a/9219.html

相关文章:

  • AI赋能电商:创新应用提升销售与用户体验
  • 第 4 章 - Go 语言变量与常量
  • SpringBoot单体服务无感更新启动,动态检测端口号并动态更新
  • Java static静态变量 C语言文件读写
  • 鸿蒙next打包流程
  • IDEA连接不同种类数据库
  • 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)
  • 简单的做一个学校毕业啊项目
  • 【刷题之路】LeetCode 2389. 和有限的最长子序列
  • kafka-3 集群介绍
  • C19210-H10 K80-TM02铜合金板带耐蚀性好
  • 【JavaWeb】9—监听器
  • 版本控制:git的基本使用
  • 页面布局基础知识
  • 梳理ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系
  • 【论文笔记】CRN: Camera Radar Net for Accurate, Robust, Efficient 3D Perception
  • CSS 单位
  • Spring数据库事务管理
  • Vue.js 2.0 条件渲染
  • 如何处理后端返回的复杂数据
  • 【源码】手麻系统源码,C#手术麻醉系统源码
  • 前端如何优雅地使用枚举
  • 蓝桥杯基础8:BASIC-7试题 特殊的数字
  • table数据自动滚动
  • Redis 实现限流
  • 异构计算给我们带来了哪些思考?