赞
踩
目录
一般的机器学习工具自带iris数据集 --- sklearn包中
pip install -U scikit-learn
from sklearn.datasets import load_iris
data = load_iris()
- import numpy as np
- import tensorflow as tf
-
- from sklearn.datasets import load_iris
- data=load_iris()
- iris_target = data.target
- iris_data = np.float32(data.data)
-
- iris_target = np.float32(tf.keras.utils.to_categorical(iris_target,num_classes=3))
- iris_data = tf.data.Dataset.from_tensor_slices(iris_data).batch(50)
- iris_target = tf.data.Dataset.from_tensor_slices(iris_target).batch(50)
-
- model = tf.keras.models.Sequential()
-
- model.add(tf.keras.layers.Dense(32,activation='relu'))
- model.add(tf.keras.layers.Dense(64,activation='relu'))
- model.add(tf.keras.layers.Dense(3,activation='softmax'))
-
- opt = tf.optimizers.Adam(1e-3)
-
- for epoch in range(1000):
- for _data,label in zip(iris_data,iris_target):
- with tf.GradientTape() as tape:
- logits = model(_data)
- loss_value = tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_true=label,y_pred =logits))
- grads = tape.gradient(loss_value,model.trainable_variables)
- opt.apply_gradients(zip(grads,model.trainable_variables))
-
- print("epoch",epoch,"'s training loss is:",loss_value.numpy())
model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(32,activation='relu')) model.add(tf.keras.layers.Dense(64,activation='relu')) model.add(tf.keras.layers.Dense(3,activation='softmax'))
for epoch in range(1000): for _data,label in zip(iris_data,iris_target): with tf.GradientTape() as tape: logits = model(_data) loss_value = tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_true=label,y_pred =logits)) grads = tape.gradient(loss_value,model.trainable_variables) opt.apply_gradients(zip(grads,model.trainable_variables))
- #1.输入端
- inputs= tf.keras.layers.Input(shape=(4,))
-
- #2.中间层
- x = tf.keras.layers.Dense(32,activation='relu')(inputs)
- x = tf.keras.layers.Dense(64,activation='relu')(x)
-
- #3.输出端:直接将计算的最后一个层座位输出端
- predictions= tf.keras.layers.Dense(3,activation='softmax')(x)
-
- model= tf.keras.Model(inputs=inputs,outputs = predictions)
tf.keras.Input(
shape=None, #形状元组 shape=(32,)---输入是32维向量
batch_size=None, #静态批量的大小--整数
name=None, #自定图层名字(一般不要重复
dtype=None, #数据类型(float32、float64...
sparse=False, #布尔值False/True 是否创建稀疏占位符
tensor=None...) #可选现有张量包裹到Input图层 True--不创建占位符张量
- #保存模型
- model.save('./saver/model2-2.h5')
- import numpy as np
- import tensorflow as tf
-
- from sklearn.datasets import load_iris
- data=load_iris()
- iris_target = data.target
- iris_data = np.float32(data.data)
- iris_target = np.float32(tf.keras.utils.to_categorical(iris_target,num_classes=3))
-
- new_model = tf.keras.models.load_model('./saver/model2-2.h5')
- new_prediction = new_model.predict(iris_data)
-
- print(tf.argmax(new_prediction,axis=-1))
- import numpy as np
- import tensorflow as tf
-
- from sklearn.datasets import load_iris
- data=load_iris()
- iris_target = data.target
- iris_data = np.float32(data.data)
- iris_target = np.float32(tf.keras.utils.to_categorical(iris_target,num_classes=3))
-
- #输入格式有改变 以(iris_data,iris_target)形式输入数据和标签
- train_data = tf.data.Dataset.from_tensor_slices((iris_data,iris_target)).batch(128)
-
- input_xs = tf.keras.layers.Input(shape=(4,),name="input_xs")
- out = tf.keras.layers.Dense(32,activation="relu",name="dense_1")(input_xs)
- out = tf.keras.layers.Dense(64,activation="relu",name="dense_2")(out)
- logits = tf.keras.layers.Dense(3,activation='softmax',name='predictions')(out)
-
- model = tf.keras.Model(inputs = input_xs,outputs = logits)
- opt = tf.optimizers.Adam(1e-3)
-
- model.compile(optimizer=tf.optimizers.Adam(1e-3),loss=tf.losses.categorical_crossentropy,metrics=['accuracy'])
-
- model.fit(train_data,epochs=500)
-
- score = model.evaluate(iris_data,iris_target)
- print("last score:",score)
#输入格式有改变 以(iris_data,iris_target)形式输入数据和标签
train_data = tf.data.Dataset.from_tensor_slices((iris_data,iris_target)).batch(128)
input_xs = tf.keras.layers.Input(shape=(4,),name="input_xs") out = tf.keras.layers.Dense(32,activation="relu",name="dense_1")(input_xs) out = tf.keras.layers.Dense(64,activation="relu",name="dense_2")(out) logits = tf.keras.layers.Dense(3,activation='softmax',name='predictions')(out)
model = tf.keras.Model(inputs = input_xs,outputs = logits)
model.compile(optimizer=tf.optimizers.Adam(1e-3),loss=tf.losses.categorical_crossentropy,metrics=['accuracy'])
model.fit(train_data,epochs=500)or
model.fit(x=iris_data,y=iris_target,batch_size=128,epochs=500)
score = model.evaluate(iris_data,iris_target) print("last score:",score)
Epoch 1/500
2/2 [==============================] - 0s 499us/step - loss: 1.4749 - accuracy: 0.3333
Epoch 2/500
2/2 [==============================] - 0s 502us/step - loss: 1.3558 - accuracy: 0.4267...
Epoch 498/500
2/2 [==============================] - 0s 0s/step - loss: 0.0908 - accuracy: 0.9667
Epoch 499/500
2/2 [==============================] - 0s 264us/step - loss: 0.0907 - accuracy: 0.9667
Epoch 500/500
2/2 [==============================] - 0s 495us/step - loss: 0.0905 - accuracy: 0.9667
5/5 [==============================] - 0s 444us/step - loss: 0.0902 - accuracy: 0.9667last score: [0.09018253535032272, 0.9666666388511658]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。