# #!/usr/bin/env python
# # -*- coding:utf-8 -*-
import tensorflow as tf
import numpy as np
# 张量的操作
# print(tf.constant(3))
# print(tf.constant([1.0,2.0,3.0]))
# a = tf.constant(
# [ [1,2],
# [3,4],
# [5,6],],dtype=tf.float16
# )
# print(a)
# b = tf.constant([
# [[1,2,3,4,5],
# [2,3,4,5,6]],
# [[1,2,3,4,5],
# [2,3,4,5,6]]
# ],dtype=tf.float16)
# print(b)
# ###转换成numpy
# tensor1 = tf.constant([1,2,3,4,5])
# print(tensor1)
# print(np.array(tensor1))
# print(tensor1.numpy())
###常用函数
# a = tf.constant([[1,2],
# [3,4]])
# b = tf.constant([[1,1],
# [1,1]])
#
# print(tf.add(a,b)) #元素加法
# print(tf.multiply(a,b)) #元素相乘
# print(tf.matmul(a,b)) #矩阵乘法
# print(tf.reduce_max(a)) #最大值
# print(tf.argmax(a)) #最大值索引
# print(tf.reduce_mean(a)) #平均值
###变量variable:变量是一种特殊的张量,形状是不可变的,单可以更改其中的参数
var = tf.Variable([[1,2],[3,4]])
print(var)
print(var.shape)
print(var.dtype)
print(var.numpy())
var.assign([[2,3],[4,5]])
tf.keras的常用方法
快速入门模型(鸢尾花分类)
在https://github.com/mwaskom/seaborn-data下载数据集,并放到python文件夹中。
会报错
import seaborn as sns
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegressionCV
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras import utils
#数据处理
#加载数据
iris = sns.load_dataset('iris')
print(iris.shape)
print(iris.head())
sns.pairplot(iris,hue="species")
#获得数据集的特征值和目标值
x = iris.values[:,:4]
y = iris.values[:,4]
#数据集划分
train_x,test_x,train_y,test_y=train_test_split(x,y,test_size=0.5,random_state=0)
print(train_x.shape)
print(test_x.shape)
#sklearn 实现鸢尾花
#使用逻辑回归
#实例化估计器
lr=LogisticRegressionCV()
#模型训练
lr.fit(train_x,train_y)
#模型评估
lr.score(test_x,test_y)
可运行
import seaborn as sns
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegressionCV
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras import utils
import matplotlib.pyplot as plt
#加载数据
iris = sns.load_dataset('iris')
print(iris.shape)
print(iris.head())
sns.pairplot(iris,hue="species")
plt.show()
x = iris.values[:,:4]
y = iris.values[:,4]
train_x,test_x,train_y,test_y = train_test_split(x,y,test_size=0.5,random_state=0)
print(train_x.shape)
print(test_x.shape)
# lr = LogisticRegressionCV()
# lr.fit(train_x,train_y)
# lr.score(test_x,test_y)
#独热编码
def one_hot_encode(arr):
uniques,ids = np.unique(arr,return_inverse=True)
return utils.to_categorical(ids,len(uniques))
train_y_ohe = one_hot_encode(train_y)
print(train_y_ohe)
test_y_ohe = one_hot_encode(test_y)
model = Sequential([
Dense(10,activation="relu",input_shape=(4,)),
Dense(10,activation="relu"),
Dense(3,activation="softmax")
])
print(model.summary())
utils.plot_model(model,'my_first_model.png')
model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["accuracy"])
train_x = np.array(train_x,dtype=np.float32)
test_x = np.array(test_x,dtype=np.float32)
model.fit(train_x,train_y_ohe,epochs=20,batch_size=1,verbose=1)
loss,accuracy = model.evaluate(test_x,test_y_ohe,verbose=1)
print(loss,accuracy)