TensorFlow神经网络模型,创建一个完整的MLP神经网络模型

创建训练集

#!/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神经网络模型。

猜你喜欢

转载自blog.csdn.net/m0_72572822/article/details/130068861