import numpy as np import matplotlib.pyplot as plt from keras.models import Sequential from keras.layers import Dense from tensorflow.keras.utils import plot_model # 随机生成1000个二维坐标数据 X = np.random.rand(1000, 2) y = np.zeros((1000, 1)) # 根据y=x对数据进行分类 for i in range(1000): if X[i, 1] > X[i, 0]: y[i, 0] = 1 else: y[i, 0] = 0 # 定义神经网络模型,没有隐藏层 model = Sequential() model.add(Dense(1, input_dim=2, activation='sigmoid')) # 编译模型 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 model.fit(X, y, epochs=50, batch_size=10) # 输出模型的权重数据 weights = model.get_weights() for i, weight in enumerate(weights): print(f'Layer {i} weights:\n{weight}\n') # 绘制随机生成的坐标数据图 plt.scatter(X[:, 0], X[:, 1], c=y[:, 0]) plt.xlabel('X') plt.ylabel('Y') plt.show()修改这段代码,使权重保持在一位小数
时间: 2024-04-14 13:30:36 浏览: 103
要将权重保持在一位小数,你可以使用`np.round()`函数来对权重进行四舍五入。以下是修改后的代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from tensorflow.keras.utils import plot_model
# 随机生成1000个二维坐标数据
X = np.random.rand(1000, 2)
y = np.zeros((1000, 1))
# 根据y=x对数据进行分类
for i in range(1000):
if X[i, 1] > X[i, 0]:
y[i, 0] = 1
else:
y[i, 0] = 0
# 定义神经网络模型,没有隐藏层
model = Sequential()
model.add(Dense(1, input_dim=2, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X, y, epochs=50, batch_size=10)
# 输出模型的权重数据(保留一位小数)
weights = model.get_weights()
for i, weight in enumerate(weights):
weights_rounded = np.round(weight, decimals=1)
print(f'Layer {i} weights:\n{weights_rounded}\n')
# 绘制随机生成的坐标数据图
plt.scatter(X[:, 0], X[:, 1], c=y[:, 0])
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
```
在这个修改后的代码中,我使用`np.round()`函数将权重保留到一位小数,并将结果打印出来。你可以根据需要调整保留小数的位数。
阅读全文