本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(
学习知识来自: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博客
【tensorflow2.0】评价指标metrics - 西西嘛呦 - 博客园 (cnblogs.com)