用tensorflow2创建一个完整5层的神经网络,输入层的特征数量是463,输出层的标签数量是5,激活函数可以自定义relue或sigmoid ,要防止过拟合,每训练100次打印成本,并且打印出训练样本集的准确率和测试集的准确率,把代码写出来
时间: 2024-05-05 16:18:37 浏览: 43
tensorflow建立一个简单的神经网络的方法
好的,下面是创建神经网络的代码:
```python
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# 定义神经网络模型
def build_model(input_shape, num_classes):
model = keras.Sequential([
layers.Dense(256, activation='relu', input_shape=input_shape),
layers.Dropout(0.3),
layers.Dense(128, activation='relu'),
layers.Dropout(0.2),
layers.Dense(64, activation='relu'),
layers.Dropout(0.1),
layers.Dense(num_classes, activation='sigmoid')
])
return model
# 加载数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 数据预处理
x_train = x_train.reshape(x_train.shape[0], -1) / 255.0
x_test = x_test.reshape(x_test.shape[0], -1) / 255.0
y_train = keras.utils.to_categorical(y_train)
y_test = keras.utils.to_categorical(y_test)
# 构建模型
model = build_model((784,), 10)
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
history = model.fit(x_train, y_train, batch_size=128, epochs=100, verbose=0, validation_split=0.2)
# 打印训练成本和准确率
loss, acc = model.evaluate(x_train, y_train, verbose=0)
print("训练样本集成本:{:.4f}".format(loss))
print("训练样本集准确率:{:.4f}".format(acc))
loss, acc = model.evaluate(x_test, y_test, verbose=0)
print("测试集成本:{:.4f}".format(loss))
print("测试集准确率:{:.4f}".format(acc))
```
以上代码使用MNIST手写数字识别数据集构建一个5层的神经网络模型,包括3个隐藏层和1个输出层,其中每个隐藏层都使用ReLU激活函数,并在每个隐藏层之后添加一定的Dropout正则化来防止过拟合。输出层使用Sigmoid激活函数,损失函数使用交叉熵,优化器使用Adam。训练完成后,打印出训练样本集和测试集的成本和准确率。
阅读全文