TensorfFlow2【4】TensorFlow2入门案例

一.拟合线性函数

import numpy as np
import tensorflow as tf

# 1.创建数据集
x_data = np.random.rand(100)					# 生成数据.100个0-1的随机点
noise = np.random.normal(0,0.01,x_data.shape)	# 生成随机噪声
y_data = x_data*0.1 + 0.2 + noise				# 创建目标值
# 2.构建模型
model = tf.keras.Sequential()
model.add(Dense(units=1, input_dim=1))
model.compile(optimizer=SGD(0.03), loss='mse')
# 3.模型训练
for i in range(2002):							# 训练2002次 batch:批处理
	cost = model.train_on_batch(x_data,y_data)
	if i%500 == 0:
		print('cost--',cost)
# 4.模型预测
y_pred = model.predict(x_data)

二.拟合非线性函数

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

# 1.创建数据集
x_data = np.linspace(-0.5,0.5,200)[:,np.newaxis]
noise = np.random.normal(0,0.02,x_data.shape)
y_data = np.square(x_data) + noise
# 2.构建模型
model = tf.keras.Sequential()
# 非线性回归需要一个带有隐藏层的神经网络,并且需要非线性的激活函数
model.add(Dense(input_dim=1,activation='tanh',units=10))
model.add(Dense(activation='tanh',units=1))
model.compile(optimizer=SGD(0.3),loss='mse')
# 3.模型训练
for i in range(3001):
	cost = model.train_on_batch(x_data,y_data)
	if i%1000 == 0:
		print("cost--",cost)
        # 4.模型预测
		y_pred = model.predict(x_data)
		plt.subplot(2,2,i/1000 + 1)
		plt.scatter(x_data,y_data)
		plt.plot(x_data,y_pred,'r-')
		plt.title("picture:" + str(i/1000 + 1))
plt.show()

三.mnist分类

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
'''
	数据载入的时候已经划分好了训练集和测试集
	x_train(60000,28,28)
	y_train(60000)
	x_test (10000,28,28)
	y_test (10000)
'''
# 1.获取数据
mnist = tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test) = mnist.load_data() # 必须以元组的形式接收
# 2.特征工程
x_test = x_test/255.0
x_train = x_train/255.0
y_train = tf.keras.utils.to_categorical(y_train,num_classes=10)	# 目标值准进行独热编码处理
y_test = tf.keras.utils.to_categorical(y_test,num_classes=10)
# 4.模型构建
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28,28)),
    tf.keras.layers.Dense(10,activation='softmax')
])
# 5.模型编译与训练
sgd = SGD(0.1)	# 优化器
model.compile(optimizer=sgd,loss='mse',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=10,batch_size=32,validation_data=(x_test,y_test))

四.鸢尾花分类

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import tensorflow as tf

# 1.获取数据
iris = load_iris()
x = iris.data
y = iris.target
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=0)
# 2.模型构建
model = tf.keras.models.Sequential([
    Dense(10,activation='relu',input_dim=(4)),
    Dense(10,activation='relu'),
    Dense(3,activation='softmax')
])
# 3.模型训练
model.compile(optimizer='adam',loss='mse',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=10,batch_size=1,verbose=1)
# 4.模型预测
y_predict = model.predict(x_test)
# 5.模型评估
loss,accuarcy = model.evaluate(x_test,y_test,verbose=1)
print('loss---',loss)
print('accuarcy---',accuarcy)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值