理解神经网络,第二部分神经网络的类型
扫描二维码
随时随地手机看文章
神经网络的类型
1. Feed-Forward Neural Networks (FNN)
· 最简单的建筑。
· 信息向一个方向流动。
· 适合结构化数据和分类。
· 范例用法 *信贷风险评估。
2.卷积神经网络(CNN)
· 专门用于处理网格状数据。
· 非常适合图像和视频处理。
· 使用卷积操作。
· 范例用法 :面部识别、医学成像。
3.循环神经网络
· 处理顺序数据。
· 有内部记忆。
· 适合时间序列数据。
· 范例用法 ::股价预测。
4.长期短期记忆网络
· 先进的rnn变体。
· 更善于处理长期依赖关系。
· 包含特殊的记忆细胞。
· 范例用法 语言翻译、语音识别。
神经网络是如何创建的?
建筑设计
1.简单前进神经网络(FNN)
这个模型是为数字分类等简单任务设计的:
import tensorflow as tf
def create_basic_nn():
return tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
2.用于图像处理的卷积神经网络
这一体系结构是为图像识别和处理等任务量身定制的:
def create_cnn():
return tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
神经网络如何学习?
学习过程
1. 前方通行证
def forward_pass(model, inputs):
# Make predictions
predictions = model(inputs)
return predictions
2. 计算错误
def calculate_loss(predictions, actual):
# Using categorical crossentropy
loss_object = tf.keras.losses.CategoricalCrossentropy()
loss = loss_object(actual, predictions)
return loss
3. 反传播和优化
# Complete training example
def train_model(model, x_train, y_train):
# Prepare data
x_train = x_train.reshape(-1, 784).astype('float32') / 255.0
# Compile model
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# Train
history = model.fit(
x_train, y_train,
epochs=10,
validation_split=0.2,
batch_size=32,
callbacks=[
tf.keras.callbacks.EarlyStopping(patience=3),
tf.keras.callbacks.ReduceLROnPlateau()
])
return history
优化技术
1. 批处理
· 迷你球梯度下降。
· 批正常化。
· 倾斜剪报。
2. 规则化
· 辍学。
· L1/L2 regularization.
· 数据增强。
评价神经网络
业绩指标
def evaluate_model(model, x_test, y_test):
# Basic metrics
test_loss, test_accuracy = model.evaluate(x_test, y_test)
# Detailed metrics
predictions = model.predict(x_test)
from sklearn.metrics import classification_report, confusion_matrix
print(classification_report(y_test.argmax(axis=1), predictions.argmax(axis=1)))
print("\nConfusion Matrix:")
print(confusion_matrix(y_test.argmax(axis=1), predictions.argmax(axis=1)))
共同挑战和解决办法
1. 过分的
· 症状:训练精度高,验证精度低
· 解决办法:
# Add regularization
tf.keras.layers.Dense(64, activation='relu',
kernel_regularizer=tf.keras.regularizers.l2(0.01))
# Add dropout
tf.keras.layers.Dropout(0.5)
2. 不合适的
· 症状:训练和验证精度低
· 解决办法:
o 增加模型容量
o 增加更多层
o 增加培训时间