ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习笔记(十九)——Tensorflow 2 初见

2021-08-05 17:31:26  阅读:293  来源: 互联网

标签:layers Dense keras activation 神经网络 初见 tf Tensorflow 十九


本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(

学习知识来自:tensorflow2.0入门与实战 2019年最通俗易懂的课程_哔哩哔哩_bilibili

数据见:机器学习笔记(十三)——非线性逻辑回归(梯度下降法) - Lcy的瞎bb - 博客园 (cnblogs.com)

Tensorflow 2 的官方教程实在令人难以下咽,对新手非常不友好。我在网上找到的一些教程也没有告诉我里面的参数到底是干蛤的。所以我又找了一下B站,并利用以前学习的数据来做一下Tensorflow的学习。

首先读入数据之后,就是建立一个神经网络,代码如下:

model=tf.keras.Sequential([ #建立神经网络
    tf.keras.layers.Dense(4,activation='sigmoid'), #建立一层神经网络用Dense,其中第一个数字代表输出的维度(多少个感知器),activation表示使用的激活函数
    tf.keras.layers.Dense(8,activation='sigmoid'), #第二层
    tf.keras.layers.Dense(1,activation='sigmoid') #第三层,输出一个y
])

然后就要定义该神经网络的编译方法:

model.compile( #神经网络编译方法
    optimizer='adam', #优化方法,也就是找到最优结果的方法,adam是梯度下降法
    loss='mse', #Loss函数
    metrics=['accuracy'] #评价方法,对结果的准确性进行评价。
)

之后就可以用这个模型的fit()来训练数据,predict()来预测了。

更多请看参考博客。

全部代码如下:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='3' #网上找到的屏蔽tensorflow日志的方法。
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

data=np.genfromtxt('C:/Users/Lenovo/Desktop/学习/机器学习资料/线性回归以及非线性回归/LR-testSet2.txt',delimiter=',')

x=data[:,:-1]
y=data[:,-1,np.newaxis]

model=tf.keras.Sequential([ #建立神经网络
    tf.keras.layers.Dense(4,activation='sigmoid'), #建立一层神经网络用Dense,其中第一个数字代表输出的维度(多少个感知器),activation表示使用的激活函数
    tf.keras.layers.Dense(8,activation='sigmoid'), #第二层
    tf.keras.layers.Dense(1,activation='sigmoid') #第三层,输出一个y
])
 
model.compile( #神经网络编译方法
    optimizer='adam', #优化方法,也就是找到最优结果的方法,adam是梯度下降法
    loss='mse', #Loss函数
    metrics=['accuracy'] #评价方法,对结果的准确性进行评价。
)

model.fit(x,y,epochs=8000) #训练8000次
xma=x[:,0].max()+1
xmi=x[:,0].min()-1
yma=x[:,1].max()+1
ymi=x[:,1].min()-1
xx=np.arange(xmi,xma,0.02)
yy=np.arange(ymi,yma,0.02)
xx,yy=np.meshgrid(xx,yy)
z=model.predict(np.c_[xx.ravel(),yy.ravel()])
for i in range(len(z)):
    if z[i]>=0.5:
        z[i]=1
    else:
        z[i]=0
z=z.reshape(xx.shape)
x0,x1,y0,y1=[],[],[],[]
for i in range(len(y)):
    if y[i]==0:
        x0.append(x[i,0])
        y0.append(x[i,1])
    else:
        x1.append(x[i,0])
        y1.append(x[i,1])
plt.plot(x0,y0,'bo')
plt.plot(x1,y1,'rx')
plt.contourf(xx,yy,z)
plt.show()

得到结果:(只写最后一次训练的输出)

Epoch 8000/8000
4/4 [==============================] - 0s 1ms/step - loss: 0.1136 - accuracy: 0.8390

参考博客:

【Tensorflow2.1】tf.keras.layers.Dense常用方法 - 灰信网(软件开发博客聚合) (freesion.com)

tf.keras.layers.Dense()的用法_学习不易的博客-CSDN博客_tf.keras.layers.dense

tensorflow2中创建单层的tf.keras.layers.Dense的用法_进击的Explorer-CSDN博客

屏蔽tensorflow输出一般和警告信息_luoshiyong123的博客-CSDN博客

loss和metrics - 知乎 (zhihu.com)

【tensorflow2.0】评价指标metrics - 西西嘛呦 - 博客园 (cnblogs.com)

标签:layers,Dense,keras,activation,神经网络,初见,tf,Tensorflow,十九
来源: https://www.cnblogs.com/lunnyliu/p/15104350.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有