import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# Create an 8x1x8 neural network
model = Sequential([
Dense(8, activation='relu', input_dim=8), # Input layer: 8 neurons
Dense(1, activation='relu'), # Hidden layer: 1 neurons, input: 8 features
Dense(8, activation='sigmoid') # Output layer: 8 neurons
])
# Compile the model
model.compile(optimizer='adam',
loss='mse',
metrics=['accuracy'])
# Display the model summary
model.summary()
Loading...
# 展示神经网络的形状结构
from IPython.display import SVG
from tensorflow.keras.utils import model_to_dot
dot = model_to_dot(model, show_shapes=True)
dot.set('dpi', '60')
print(dot)
SVG(dot.create(prog='dot', format='svg'))
Loading...
import numpy as np
# 创建训练数据 - 每个输入是一个8维的one-hot向量
X_train = np.array([
[1, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 1]
])
# 输出数据与输入相同(恒等函数)
y_train = X_train.copy()
# 训练模型
history = model.fit(X_train, y_train, epochs=5000, verbose=0)
# 评估模型性能
loss, accuracy = model.evaluate(X_train, y_train, verbose=0)
print(f"最终损失:{loss:.4f}, 准确率:{accuracy:.4f}")
# 测试模型
predictions = model.predict(X_train)
print("\n预测结果:")
for i in range(len(X_train)):
print(f"输入:{X_train[i]} -> 预测输出:{predictions[i]},期望: {y_train[i]}")
print("-" * 50)
最终损失:0.0848, 准确率:0.3750
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step
预测结果:
输入:[1 0 0 0 0 0 0 0] -> 预测输出:[0.15174276 0.1652548 0.14516042 0.14658898 0.01403265 0.12403406
0.15222947 0.1484906 ],期望: [1 0 0 0 0 0 0 0]
--------------------------------------------------
输入:[0 1 0 0 0 0 0 0] -> 预测输出:[5.6862853e-02 8.6083519e-01 2.4752216e-02 3.0839574e-02 8.6440415e-18
7.2977220e-04 5.0237581e-02 3.6681253e-02],期望: [0 1 0 0 0 0 0 0]
--------------------------------------------------
输入:[0 0 1 0 0 0 0 0] -> 预测输出:[0.15622035 0.15078986 0.1527747 0.15338156 0.04129384 0.14328152
0.15728198 0.15467466],期望: [0 0 1 0 0 0 0 0]
--------------------------------------------------
输入:[0 0 0 1 0 0 0 0] -> 预测输出:[0.15554772 0.15287307 0.15162201 0.15235534 0.03524513 0.1402694
0.15652208 0.15374188],期望: [0 0 0 1 0 0 0 0]
--------------------------------------------------
输入:[0 0 0 0 1 0 0 0] -> 预测输出:[0.1783356 0.0969587 0.19229035 0.18817797 0.8782741 0.26533243
0.18243274 0.18603288],期望: [0 0 0 0 1 0 0 0]
--------------------------------------------------
输入:[0 0 0 0 0 1 0 0] -> 预测输出:[0.16130431 0.13600244 0.16158646 0.1612029 0.12803574 0.16743375
0.16303602 0.16176748],期望: [0 0 0 0 0 1 0 0]
--------------------------------------------------
输入:[0 0 0 0 0 0 1 0] -> 预测输出:[0.15222403 0.16363116 0.14597206 0.14731461 0.01579808 0.12601227
0.15277182 0.14915234],期望: [0 0 0 0 0 0 1 0]
--------------------------------------------------
输入:[0 0 0 0 0 0 0 1] -> 预测输出:[0.15498188 0.1546496 0.15065467 0.15149362 0.03081258 0.13776854
0.15588306 0.1529582 ],期望: [0 0 0 0 0 0 0 1]
--------------------------------------------------