创建训练集
#!/usr/bin/env python
# -*- coding=utf-8 -*-
import tensorflow as tf
import numpy as np
#创建数据集
x1=np.random.random((500,1))
x2=np.random.random((500,1))+1
x_train=np.concatenate((x1, x2))
y1=np.zeros((500,), dtype=int)
y2=np.ones((500,), dtype=int)
y_train=np.concatenate((y1, y2))
构建模型
#创建神经网络模型
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation=tf.nn.relu, input_dim=1),
#一维数组(因)
tf.keras.layers.Dense(10, activation=tf.nn.relu),
#10个神经元,使用ReLU算法
tf.keras.layers.Dense(2, activation=tf.nn.softmax)
#两种答案,使用softmax算法
])
编译
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#编译并使用Adam算法优化
训练
model.fit(x_train, y_train,
epochs=20,
batch_size=128)
#进行训练的因和果的数据
#设置训练次数
#设置每次训练的笔数
此时完整代码:
#!/usr/bin/env python # -*- coding=utf-8 -*- import tensorflow as tf import numpy as np x1=np.random.random((500,1)) x2=np.random.random((500,1))+1 x_train=np.concatenate((x1, x2)) y1=np.zeros((500,), dtype=int) y2=np.ones((500,), dtype=int) y_train=np.concatenate((y1, y2)) model = tf.keras.models.Sequential([ tf.keras.layers.Dense(10, activation=tf.nn.relu, input_dim=1), tf.keras.layers.Dense(10, activation=tf.nn.relu), tf.keras.layers.Dense(2, activation=tf.nn.softmax) ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=20, batch_size=128)
运行结果:
这里, Epoch 18/20, 指共训练20次,当前为第18次的结果。
loss : 0.4544 ,损失率为0.4544,说明模型预测值与真实值的差距。
accuracy: 0.8440:找到的权重当前的正确率为0.8440。
评估正确率
#測試
x_test=np.array([[0.22],[0.31],[1.22],[1.33]])
y_test=np.array([0,0,1,1])
score = model.evaluate(x_test, y_test, batch_size=128)
print("score:",score)
预测
predict = model.predict(x_test)#获取每一个结果的概率
print("predict:",predict)
print("Ans:",np.argmax(predict[0]),np.argmax(predict[1]),np.argmax(predict[2]),np.argmax(predict[3]))
#通过predict_ckasses函数来预测答案
predict2 = model.predict_classes(x_test)
print("predict_classes:",predict2)
print("y_test",y_test[:])
最终的全部代码:
#!/usr/bin/env python
# -*- coding=utf-8 -*-
import tensorflow as tf
import numpy as np
x1=np.random.random((500,1))
x2=np.random.random((500,1))+1
x_train=np.concatenate((x1, x2))
y1=np.zeros((500,), dtype=int)
y2=np.ones((500,), dtype=int)
y_train=np.concatenate((y1, y2))
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(units=10, activation=tf.nn.relu, input_dim=1),
tf.keras.layers.Dense(units=10, activation=tf.nn.relu),
tf.keras.layers.Dense(units=2, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train,
epochs=20,
batch_size=128)
#測試
x_test=np.array([[0.22],[0.31],[1.22],[1.33]])
y_test=np.array([0,0,1,1])
score = model.evaluate(x_test, y_test, batch_size=128)
print("score:",score)
predict = model.predict(x_test)
print("predict:",predict)
print("Ans:",np.argmax(predict[0]),np.argmax(predict[1]),np.argmax(predict[2]),np.argmax(predict[3]))
predict2 = model.predict_classes(x_test)
print("predict_classes:",predict2)
print("y_test",y_test[:])
运行结果:
至此,创建一个完整的MLP神经网络模型。