【一些笔记】TensorFlow笔记

编程入门 行业动态 更新时间:2024-10-28 20:27:25

【一些<a href=https://www.elefans.com/category/jswz/34/1770047.html style=笔记】TensorFlow笔记"/>

【一些笔记】TensorFlow笔记

TensorFlow笔记

[by_041]

TensorFlow是基于Tensor(张量)计算的一种深度学习库

参考B站视频

一个博主,他最开始的博文全是关于TF的(至少22篇)

Tensorflow 1 的官方文档 用py2的


文章目录

  • TensorFlow笔记
            • [by_041]
    • @[toc]
    • 安装
    • 语法基础
    • 使用基础
      • 数据处理基础
        • 基于`pandas`进行读取数据
        • 基于`matplotlib`进行数据绘图
      • Tensorflow 2.0 tf.keras
      • 一次完整的线性回归分析
        • 简化后
    • 跟[一个叫itluojie博主](.html)做TF
      • Tensorflow2.0入门教程1:Tensorflow安装
      • Tensorflow2.0入门教程2:认识张量Tensor
      • Tensorflow2.0入门教程3:Numpy下的线性回归
        • My改进版
        • 乱搞的二次函数

安装

  • 使用Anaconda Prompt

    • 先升级pip
      python -m pip install --upgrade pip

    • 再用镜像站安装
      pip install tensorflow-cpu -i /

      不知道啥玩意的(跳过)
      pip install numpy pandas matplotlib sklearn tensorflow==2.0.0-alpha0 -i /

      安装notebook配合使用体验更佳(体现在Jupyter中的使用)
      pip install notebook -i /

    • 启用
      activate tensorflow

      禁用
      deactivate

    • 快速安装

      (若需要升级pip)python -m pip install --upgrade pip
      pip install tensorflow-cpu -i /
      pip install notebook -i /
      activate tensorflow
      
  • 试试下面这个程序,能运行就说明可了~

    # 简单粗暴的去除额外输出的办法,后面再研究
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'# 引入 tensorflow 模块
    import tensorflow as tf# 创建一个整型常量,即 0 阶 Tensor
    t0 = tf.constant(3, dtype=tf.int32)# 创建一个浮点数的一维数组,即 1 阶 Tensor
    t1 = tf.constant([3., 4.1, 5.2], dtype=tf.float32)# 创建一个字符串的2x2数组,即 2 阶 Tensor
    t2 = tf.constant([['Apple', 'Orange'], ['Potato', 'Tomato']], dtype=tf.string)# 创建一个 2x3x1 数组,即 3 阶张量,数据类型默认为整型
    t3 = tf.constant([[[5], [6], [7]], [[4], [3], [2]]])# 打印上面创建的几个 Tensor
    print('==========================================================================')
    print(t0)
    print('==========================================================================')
    print(t1)
    print('==========================================================================')
    print(t2)
    print('==========================================================================')
    print(t3)
    print('==========================================================================')
    

语法基础

TensorFlow是基于Tensor(张量)计算的一种深度学习库,其基础语法都有所体现

使用基础

数据处理基础

包括用pandas读取数据

基于pandas进行读取数据

import pandas as pd
data = pd.read_csv('C:\\Users\\15614\\Desktop\\应用基础\\数模实战\\数据\\一手粉丝量 - 90 days.csv')
print(data)

基于matplotlib进行数据绘图

# 数据绘图
import matplotlib.pyplot as plt
# %matplotlib inline # 在bote中绘图
plt.scatter(data.time,data.fans)

Tensorflow 2.0 tf.keras

官方推荐的首选

一次完整的线性回归分析

# 第一次完整的线性回归分析# 读取数据
import pandas as pd
data = pd.read_csv('C:\\Users\\15614\\Desktop\\应用基础\\数模实战\\数据\\一手粉丝量 - 90 days.csv')
print(data)# 数据绘图
import matplotlib.pyplot as plt
# %matplotlib inline
plt.scatter(data.time,data.fans)x=data.time
y=data.fansimport tensorflow as tf
# 建立线性模型f(x)=ax+b
model=tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1,input_shape=(1,)))
# 输出数据维度为1
# 输入数据维度为1,参数类型为元组:(1,)# 输出模型的形状
print('==========================================================================')
print(model.summary())
print('==========================================================================')
# 输出结果:
# Model: "sequential_1"【模型名称】
# _________________________________________________________________
#  Layer (type)                Output Shape              Param #   
# =================================================================
#  dense_1 (Dense)     (None【编号,忽略】, 1【输出维度】)     2【总维度】
# 【*输入维度=总维度-输出维度】
# =================================================================
# Total params: 2
# Trainable params: 2
# Non-trainable params: 0
# _________________________________________________________________# 使用梯度下降算法进行优化
model.compile(optimizer='adam',	# 优化方法loss='mse'				# 损失函数,此处使用均方差)# 训练方法
history=model.fit(x,y,epochs=500)
# epochs:所有数据的训练次数# print(history) # 观察到loss值不断下降🐂# 对现有数据进行预测
predict_1=model.predict(x)
# 预测x=91,92,93时的情况
predict_2=model.predict(pd.Series([91,92,93]))
# 下面这种也等效
# model.predict([91,92,93])print('现有预测:')
print(predict_1)
print('预测未来3天:')
print(predict_2)

简化后

# 数据读入
import pandas as pd
data = pd.read_csv('C:\\Users\\15614\\Desktop\\应用基础\\数模实战\\数据\\一手粉丝量 - 90 days.csv')
print(data)# 数据绘图
import matplotlib.pyplot as plt
# %matplotlib inline # 在note中行内显示图像
plt.scatter(data.time,data.fans)
plt.show()# 建立线性模型x=data.time
y=data.fansimport tensorflow as tf
# 建立线性模型f(x)=ax+b
model=tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1,input_shape=(1,)))
# 输入数据维度为1
# 输出数据维度为1# 使用梯度下降算法进行优化
model.compile(optimizer='adam',	# 优化方法loss='mse'				# 损失函数,此处使用均方差)# 训练方法
history=model.fit(x,y,epochs=5000)
# epochs:所有数据的训练次数# 预测x=91,92,93时的情况
model.predict(pd.Series([91,92,93]))
# 下面这种也等效
# model.predict([91,92,93])

跟一个叫itluojie博主做TF

Tensorflow2.0入门教程1:Tensorflow安装

  • 自己装好了,跳过。

Tensorflow2.0入门教程2:认识张量Tensor


Tensorflow2.0入门教程3:Numpy下的线性回归

My改进版

  • 预测模型: y = w × x + b y=w\times x+ b y=w×x+b
import random as rd
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# import tensorflow as tf
import os   
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'eps=1e-6# x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
# y = np.array([5.0,6.0,7.0,8.0,9.0,10.0])np.random.seed(123)
x=np.random.random(100)*100
# y=np.random.random(100)*180+456 # 最后结果应该为 w=180/100=1.8 b=456 e=1e5 左右 
y=np.random.random(100)*340-666 # 最后结果应该为 w=340/100=3.4 b=-666 e=1e5 左右 
x.sort()
y.sort()
# data = pd.read_csv('C:\\Users\\15614\\Desktop\\应用基础\\数模实战\\数据\\一手粉丝量 - 90 days.csv')
# x=np.array(data.time)
# y=np.array(data.fans)plt.scatter(x, y)
# plt.show()w, b = 0, 0  # 定义权重W和偏置b
num_epoch = 10000  # 定义循环迭代次数
learning_rate = 0.000005  # 定义学习率,实际用的时候根据情况
loss=0
e=0
cnt_pass=0
while True :# 记录e+=1las_loss=losslas_w=wlas_b=b# 模型,预测值y_pred = w * x + b# 目标函数,MSEloss = np.mean(np.square(y_pred-y))# 手动计算损失函数关于自变量(模型参数)的梯度grad_w, grad_b = (y_pred - y).dot(x), (y_pred - y).sum()# 优化算法,更新参数w, b = w - learning_rate * grad_w, b - learning_rate * grad_b# 是否继续# if e>5e4: # 用于和tf自带的比较,固定训练次数#     break;if abs(las_loss-loss)<eps and abs(las_w-w)<eps and abs(las_b-b)<eps :cnt_pass+=1if cnt_pass>100:breakelse:cnt_pass=0if e %2000 ==0:plt.cla()plt.scatter(x,y)plt.plot(x, y_pred, 'r-', lw=5)plt.title('Loss=%.4f | adj=%e | w=%.4f | b=%.4f'%(loss,learning_rate,w,b),fontdict={'size': 14, 'color':  'red'})plt.pause(0.1)
plt.cla()
plt.scatter(x,y)
plt.plot(x, y_pred, 'r-', lw=5)
plt.title('Done < at e=%d >\nLoss=%.4f | adj=%e | w=%.4f | b=%.4f'%(e,loss,learning_rate,w,b),fontdict={'size': 14, 'color':  'red'})
plt.pause(0.1)
plt.show()
print(w, b)

乱搞的二次函数

  • 预测模型: y = w × x 2 + b y=w\times x^2+ b y=w×x2+b
import random as rd
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'eps=1e-6# x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
# y = np.array([5.0,6.0,7.0,8.0,9.0,10.0])np.random.seed(123)
# x=np.array([i*1. for i in range(100)])
x=np.random.random(100)*100-50
x.sort()
y=np.array([x[i]**2+rd.random()*180. for i in range(100)])
# data = pd.read_csv('C:\\Users\\15614\\Desktop\\应用基础\\数模实战\\数据\\一手粉丝量 - 90 days.csv')
# print((x,y))
# x=(data.time)*1.0
# y=(data.fans)*1.0plt.scatter(x, y)
# plt.show()
# exit()xx=np.array([(x[i])**2*1. for i in range(100)])w, b = 0, 0  # 定义权重W和偏置b
num_epoch = 10000  # 定义循环迭代次数
learning_rate = 0.00000005  # 定义学习率
for e in range(num_epoch or True):# 模型,预测值y_pred =w*xx+b# 目标函数,MSEloss = np.mean(np.square(y_pred-y))# 手动计算损失函数关于自变量(模型参数)的梯度grad_w, grad_b = (y_pred - y).dot(x), (y_pred - y).sum()# 优化算法,更新参数las_w=wlas_b=bw, b = w - learning_rate * grad_w, b - learning_rate * grad_bif abs(las_w-w)<eps and abs(las_b-b)<eps :breakif e %70 ==0:plt.cla()plt.scatter(x,y)plt.plot(x, y_pred, 'r-', lw=5)plt.title('Loss=%.4f | adj=%e | w=%.4f | b=%.4f'%(loss,learning_rate,w,b),fontdict={'size': 14, 'color':  'red'})plt.pause(0.1)
plt.cla()
plt.scatter(x,y)
plt.plot(x, y_pred, 'r-', lw=5)
plt.title('Done\nLoss=%.4f | adj=%e | w=%.4f | b=%.4f'%(loss,learning_rate,w,b),fontdict={'size': 14, 'color':  'red'})
plt.pause(0.1)
plt.show()
print(w, b)
  • 预测模型: y = w × ( x − 50 ) 2 + b y=w\times (x-50)^2+ b y=w×(x−50)2+b
import random as rd
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'eps=1e-6# x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
# y = np.array([5.0,6.0,7.0,8.0,9.0,10.0])np.random.seed(123)
# x=np.array([i*1. for i in range(100)])
x=np.random.random(100)*100
x.sort()
y=np.array([(x[i]-50)**2+rd.random()*180. for i in range(100)])
# data = pd.read_csv('C:\\Users\\15614\\Desktop\\应用基础\\数模实战\\数据\\一手粉丝量 - 90 days.csv')
# print((x,y))
# x=(data.time)*1.0
# y=(data.fans)*1.0plt.scatter(x, y)
# plt.show()
# exit()xx=np.array([(x[i]-50)**2*1. for i in range(100)])w, b = 0, 0  # 定义权重W和偏置b
num_epoch = 10000  # 定义循环迭代次数
learning_rate = 0.0000000005  # 定义学习率
for e in range(num_epoch or True):# 模型,预测值y_pred =w*xx+b# 目标函数,MSEloss = np.mean(np.square(y_pred-y))# 手动计算损失函数关于自变量(模型参数)的梯度grad_w, grad_b = (y_pred - y).dot(x), (y_pred - y).sum()# 优化算法,更新参数las_w=wlas_b=bw, b = w - learning_rate * grad_w, b - learning_rate * grad_bif abs(las_w-w)<eps and abs(las_b-b)<eps :breakif e %70 ==0:plt.cla()plt.scatter(x,y)plt.plot(x, y_pred, 'r-', lw=5)plt.title('Loss=%.4f | adj=%e | w=%.4f | b=%.4f'%(loss,learning_rate,w,b),fontdict={'size': 14, 'color':  'red'})plt.pause(0.1)
plt.cla()
plt.scatter(x,y)
plt.plot(x, y_pred, 'r-', lw=5)
plt.title('Done\nLoss=%.4f | adj=%e | w=%.4f | b=%.4f'%(loss,learning_rate,w,b),fontdict={'size': 14, 'color':  'red'})
plt.pause(0.1)
plt.show()
print(w, b)

更多推荐

【一些笔记】TensorFlow笔记

本文发布于:2023-06-30 14:17:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/961698.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笔记   TensorFlow

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!