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

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

学习知识来自: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)

posted @ 2021-08-05 17:24  Lcy的瞎bb  阅读(85)  评论(0编辑  收藏  举报