课程地址:https://www.icourse163.org/learn/youdao-1460578162?tid=1461280442#/learn/content?type=detail&id=1239072224&cid=1259990170&replay=true

tensorflow简介

一个神经元的网络

# #!/usr/bin/env python
# # -*- coding:utf-8 -*-import tensorflow as tf
#绘图
import seaborn as sns
#数值计算
import numpy as np
from tensorflow import keras
#建立模型
model = keras.Sequential([keras.layers.Dense(units=1,input_shape=[1])])
#创建损失函数
model.compile(optimizer='sgd',loss='mean_squared_error')
#添加数据
xs = np.array([-1.0,0.0,1.0,2.0,3.0,4.0],dtype=float)
ys = np.array([-3.0,-1.0,1.0,3.0,5.0,7.0],dtype=float)
#训练数据
model.fit(xs,ys,epochs=500)
#输出预测值
print(model.predict([10.0]))

计算机视觉

用Fashion MNIST进行简单的分类

# #!/usr/bin/env python
# # -*- coding:utf-8 -*-import tensorflow as tf
import numpy as np
from tensorflow import keras
import matplotlib.pyplot as plt
#创建和加载数据#当满足一定条件时自动终止训练
class myCallback(tf.keras.callbacks.Callback):def on_epoch_end(self, epoch, logs={}):if(logs.get('loss')>0.4):  #当loss小于0.4时停止训练,在一定时间后会停止训练print("\nLoss is low so cancelling training!")self.model.stop_training=True
#实例化方法
callbacks = myCallback()fashion_mnist = keras.datasets.fashion_mnist
(train_images,train_labels),(test_images,test_labels) = fashion_mnist.load_data()
# print(train_images.shape)
# print(train_images[0])
# print(train_labels.shape)
# print(train_labels[:5])
# plt.imshow(test_images[1])
# plt.show()#构建全连接的网络结构
model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28,28)))
model.add(keras.layers.Dense(128,activation=tf.nn.relu))
model.add(keras.layers.Dense(10,activation=tf.nn.softmax))
#一共有((784+1)*128个参数)  +1是因为每一层都有一个bias
#查看网络结构 print(model.summary())
#print(model.summary())#训练和评估网络#制定优化和损失函数
train_images_scaled=train_images/255  #normalizition  归一化可以提高准确率
model.compile(optimizer=tf.optimizers.Adam(),loss=tf.losses.sparse_categorical_crossentropy,metrics=['accuracy'])
model.fit(train_images_scaled,train_labels,epochs=5,callbacks=[callbacks])
#用测试集评估网络
test_images_scaled = test_images/255
print(model.evaluate(test_images_scaled,test_labels))#预测单张图片并输出结果
print(np.argmax(model.predict([[test_images[1]/255]])))
print(test_labels[1])
plt.imshow(test_images[1])
plt.show()

卷积简介

卷积神经网络

Max Pooling后可以增强特征,减少数据

卷积网络结构

# #!/usr/bin/env python
# # -*- coding:utf-8 -*-import tensorflow as tf
import numpy as np
from tensorflow import keras
import matplotlib.pyplot as plt
#创建和加载数据#当满足一定条件时自动终止训练
class myCallback(tf.keras.callbacks.Callback):def on_epoch_end(self, epoch, logs={}):if(logs.get('accuracy')>0.8):  #当loss小于0.4时停止训练,在一定时间后会停止训练print("\nLoss is low so cancelling training!")self.model.stop_training=True
#实例化方法
callbacks = myCallback()fashion_mnist = keras.datasets.fashion_mnist
(train_images,train_labels),(test_images,test_labels) = fashion_mnist.load_data()#构建卷积神经网络结构
model = keras.Sequential()
model.add(keras.layers.Conv2D(64,(3,3),activation='relu',input_shape=(28,28,1)))
model.add(keras.layers.MaxPool2D(2,2))
model.add(keras.layers.Conv2D(64,(3,3),activation='relu'))
model.add(keras.layers.MaxPool2D(2,2))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(128,activation=tf.nn.relu))
model.add(keras.layers.Dense(10,activation=tf.nn.softmax))#训练和评估网络#制定优化和损失函数
train_images_scaled=train_images/255  #normalizition  归一化可以提高准确率
model.compile(optimizer=tf.optimizers.Adam(),loss=tf.losses.sparse_categorical_crossentropy,metrics=['accuracy'])
model.fit(train_images_scaled.reshape(-1,28,28,1),train_labels,epochs=5,callbacks=[callbacks])
#预测和显示图片
layer_outputs = [layer.output for layer in model.layers]
activation_model = tf.keras.models.Model(inputs = model.input,outputs=layer_outputs)
pred = activation_model.predict(test_images[0].reshape(1,28,28,1))
#pred[1]  表示某一层的图像  [0,:,:,1]表示某一个过滤器的图像
plt.imshow(pred[1][0,:,:,1])
plt.show()

更复杂的图像应用:人马分类识别

ImageDataGenerator

构建并训练模型

# #!/usr/bin/env python
# # -*- coding:utf-8 -*-import tensorflow as tf
import numpy as np
from tensorflow import keras
import matplotlib.pyplot as plt
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.preprocessing.image import ImageDataGenerator
#创建两个数据生成器,指定scaling范围0-1
train_datagen = ImageDataGenerator(rescale=1/255)
validation_datagen = ImageDataGenerator(rescale=1/255)
#指向训练数据文件夹
train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human/', #训练数据所在文件夹target_size=(300,300),  #指定输出尺寸batch_size=32,class_mode='binary'  #指定二分类
)
#指向测试数据文件夹
validation_generator = validation_datagen.flow_from_directory('/tmp/validation-horse-or-human/',target_size=(300,300),batch_size=32,class_mode='binary'
)model = tf.keras.models.Sequential([#this is the first convolutiontf.keras.layers.Conv2D(16,(3,3),activation='relu',input_shape=(300,300,3)),tf.keras.layers.MaxPooling2D(2,2),#the second convolutiontf.keras.layers.Conv2D(32,(3,3),activation='relu'),tf.keras.layers.MaxPooling2D(2,2),#the third convolutiontf.keras.layers.Conv2D(64,(3,3),activation='relu'),tf.keras.layers.MaxPooling2D(2,2),#Flatten the results to feed into a DNNtf.keras.layers.Flatten(),#512 neuron hidden layertf.keras.layers.Dense(512,activation='relu'),#Only 1 output neuron.it will contain a value from 0-1 where 0 for 1 class ('horse') and 1 for the other ('humans')tf.keras.layers.Dense(1,activation='sigmoid')
])model.compile(loss='binary_crossentropy',optimizer=RMSprop(lr=0.001),metrics=['acc'])
history = model.fit(train_generator,epochs=15,verbose=1,validation_data=validation_generator,validation_steps=8
)

优化模型参数,提高识别率

不能运行

# #!/usr/bin/env python
# # -*- coding:utf-8 -*-import tensorflow as tf
import numpy as np
from tensorflow import keras
import matplotlib.pyplot as plt
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.preprocessing.image import ImageDataGenerator
#用kerastuner优化模型
from kerastuner.tuners import Hyperband
from kerastuner.engine.hyperparameters import Hyperparameters
#创建两个数据生成器,指定scaling范围0-1
train_datagen = ImageDataGenerator(rescale=1/255)
validation_datagen = ImageDataGenerator(rescale=1/255)
#指向训练数据文件夹
train_generator = train_datagen.flow_from_directory('/tmp/horse-or-human/', #训练数据所在文件夹target_size=(300,300),  #指定输出尺寸batch_size=32,class_mode='binary'  #指定二分类
)
#指向测试数据文件夹
validation_generator = validation_datagen.flow_from_directory('/tmp/validation-horse-or-human/',target_size=(300,300),batch_size=32,class_mode='binary'
)
hp = Hyperparameters()
def build_model(hp):model = tf.keras.models.Sequential()#this is the first convolution# num_filters_layer0 参数的变量名# values  范围model.add(tf.keras.layers.Conv2D(hp.Choice('num_filters_layer0',values=[16,64],defaule=16),(3,3),activation='relu',input_shape=(300,300,3)))model.add(tf.keras.layers.MaxPooling2D(2,2))#the second convolutionfor i in range(hp.Int("num_conv_layers",1,3)):model.add(tf.keras.layers.Conv2D(f'num_filters_layer1',values=[16,64],defaule=16),(3,3),activation='relu'))model.add(tf.keras.layers.MaxPooling2D(2,2))#Flatten the results to feed into a DNNmodel.add(tf.keras.layers.Flatten())#512 neuron hidden layermodel.add(tf.keras.layers.Dense(hp.Int("hidden_units",128,512,step=32),activation='relu'))#Only 1 output neuron.it will contain a value from 0-1 where 0 for 1 class ('horse') and 1 for the other ('humans')model.add(tf.keras.layers.Dense(1,activation='sigmoid'))model.compile(loss='binary_crossentropy',optimizer=RMSprop(lr=0.001),metrics=['acc'])return model
tuner = Hyperband(build_model,objective = 'val_acc',max_epochs = 15,directory = 'horse_human_params',#参数保存的位置hyperparameters = hp,project_name = 'my_horse_human_project'
)
tuner.search(train_generator,epoch=10,validation_data=validation_generator)

MOOC网TensoroFlow入门实操课程1——tensorflow简介、计算机视觉、卷积简介、人马分类识别相关推荐

  1. MOOC网TensoroFlow入门实操课程7——TensoroFlow Lite的Android部署

    Android的猫与狗分类 Android的图像分类 Android的物体检测

  2. MOOC TensorFlow入门实操课程代码回顾总结(三)

    欢迎来到TensorFlow入门实操课程的学习 MOOC TensorFlow入门实操课程代码回顾总结(一) MOOC TensorFlow入门实操课程代码回顾总结(二) 注: 用于表示python代 ...

  3. TensorFlow官方入门实操课程-一个神经元的网络(线性曲线预测)

    基于如下的课程进行的学习记录 TensorFlow官方入门实操课程 #设置显卡内存使用率,根据使用率占用 import os os.environ["TF_FORCE_GPU_ALLOW_G ...

  4. TensorFlow官方入门实操课程-卷积神经网络

    知识点 卷积:用原始像素数据与过滤器中的值相乘,以后加起来. 如下是增强水平特征的过滤器. MaxPooling:每次卷积结束以后用一个MaxPooling用来增强图像的特征. 可以看出经过MaxPo ...

  5. TensorFlow官方入门实操课程-全连接神经网络分类

    #设置显卡内存使用率,根据使用率占用 import os os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true" #引 ...

  6. 微生物组入门必读+宏基因组实操课程=新老司机赶快上车

    声明:本文转载自宏基因组公众号,原作者朱微金,己获作者授权. 写在前面 作为纯wet遗传学博士,转行微生物组领域已经有两年.目睹微生物组文章中分析所占比重之大,让我痛下决心苦学dry技能.目前感觉对宏 ...

  7. 【直播回顾及资料下载】小程序云应用入门实操系列课程第一讲...

    直播详情:小程序云应用入门实操系列课程第一讲:https://yq.aliyun.com/articles/698244 直播时间:2019年4月16日 20:30 直播专家: 白宦成 - Linux ...

  8. 切图案例实操课程二-姜威-专题视频课程

    切图案例实操课程二-199人已学习 课程介绍         本课程以主要目的是引导初入前端的小白,了解前端是如何工作的,通过正确建立构建环境,解构任务, 课程收益      讲师介绍     姜威 ...

  9. frp(内网穿透)实操篇--映射远程端口(二)

    frp(内网穿透)实操篇–远程电脑(二) 内网穿透的前提需要:一个拥有固定的ip地址的主机: 常规家用网络运营商都采用的是动态ip,ip随时在变化 我这里用到的是 腾讯云:大家有需要也可以购买. 新用 ...

最新文章

  1. 为什么我十分喜欢 C,却很不喜欢 C++
  2. 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)
  3. 05-xpath爬虫数据解析
  4. Why React?
  5. ASP.NET企业开发框架IsLine FrameWork系列之二--命名空间与契约
  6. linux开启多少到多少端口命令,Linux端口命令
  7. 为什么JS中0.1+0.2 != 0.3
  8. 论坛指定portal.php,去除Discuz论坛域名后面的/forum.php或portal.php
  9. mysql5.7.10安装时密码_Windows10中MySQL5.7安装及修改root密码的详细方法
  10. MySQL缓存推荐使用吗_Mysql 查询缓存利弊
  11. 解决: Couldn‘t find meta-data for provider with authority xxx.fileProvider
  12. Ant Design for vue
  13. 四级网络工程师笔记-操作系统(中)
  14. 练一练思维缜密程度。有程式xyz+yzz=532,其中x、y、z都是整数,用c++编写一个程序,求x、y、z分别代表什么数字
  15. 短址服务实现的一些算法
  16. openGL贝塞尔曲面细分
  17. 计算机数列类型,斐波那契(Fibonacci)数列的几种计算机解法
  18. 广汽丰田-“饮水思源”活动专题网站
  19. 基于java的电脑配件报价网站系统
  20. Golang配合QQ机器人获取Pixiv ea7e6c5a5f673669f0d56d8f39056eae每日列表并发送涩图(未完)

热门文章

  1. Linux tar打包命令
  2. 手机便签上怎么设置保险到期续保提醒呢?
  3. 轮廓发现 contours
  4. 1014. 福尔摩斯的约会 分析
  5. ubuntu16 编译安装boost1.69与cuda8的opencv3.2.0
  6. 基于nodejs+selenium自动过滑动验证码的QQ刷赞
  7. 王者服务器维护8月25,王者荣耀8月25日英雄调整有哪些 8月25日英雄调整内容汇总...
  8. 小米13屏幕尺寸 小米 13是双卡还是单卡?
  9. sim卡人突然显示无服务器,手机突然间显示无SIM是怎么回事?可能是这些情况造成的!...
  10. 成为顶级python工程师_Python绝技:运用Python成为顶级数据工程师