基于深度神经网络的代码
时间: 2024-05-09 22:16:16 浏览: 3
以下是使用Keras和TensorFlow构建基于深度神经网络的代码示例:
```python
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer
# Load data
digits = load_digits()
X = digits.data
y = digits.target
X -= X.min()
X /= X.max()
# Convert labels to one-hot encoding
label_binarizer = LabelBinarizer()
y = label_binarizer.fit_transform(y)
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y)
# Build model
model = Sequential()
model.add(Dense(512, input_shape=(64,), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
# Compile model
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
# Train model
model.fit(X_train, y_train, epochs=20, batch_size=128)
# Evaluate model
score = model.evaluate(X_test, y_test, batch_size=128)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
```
这个例子使用了一个深度神经网络来分类手写数字图像。模型包括两个隐藏层,每个隐藏层有512个神经元,使用ReLU激活函数。为了避免过拟合,我们添加了Dropout层。输出层有10个神经元,使用softmax激活函数来产生类别概率分布。模型使用随机梯度下降优化器进行训练,并计算交叉熵作为损失函数。在训练完成后,我们评估了模型在测试集上的性能。