Python深度学习之神经网络模型【附代码】_深度神经网络 代码(1)

Tanh函数:如右图所示, Tanh函数将取值为*(−∞,∞)*(-∞,∞)的数转换到(-1,1)之间。当x很大或者很小的时候,导数 f′(x)也会很接近0,和sigmoid函数有同样的梯度消失的问题。但是tanh函数的均值为0,在这点上弥补了sigmoid函数均值为0.5的缺点。

Relu函数:如右图所示, Relu函数是一种分段线性函数,它在输入为正数时弥补了Sigmoid函数以及Tanh函数的梯度消失问题,但是输入为负数时仍然有梯度消失的问题。此外Relu函数的计算速度相对于Sigmoid函数和Tanh函数也较快一些,在实战应用中,Relu函数在神经网络模型中用的相对较广一些。

2、多层神经网络模型

实际应用中,常常采用如下图所示的多层神经网络,在多层神经网络模型中,输入层和输出层间可以有多层隐藏层,层与层之间互相连接,信号通过线性变换和激活函数的复杂映射,不断地进行传递。

(2)神经网络模型简单代码****实现

下面我们使用Scikit-Learn库中的MLP多层神经网络模型解决一个简单的二分类问题。数据如下,其中二维向量X是自变量,一维向量Y是因变量,其中Y的取值范围为0或1,代表两个不同的分类:

将数据通过神经网络模型进行拟合:

X = [[1, 0], [5, 1], [6, 4], [4, 2], [3, 2]]
y = [0, 1, 1, 0, 0]
mlp &#
  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一份基于深度学习卷积神经网络的花卉识别Python代码,使用Keras框架实现: ``` # 导入所需的库 import os import numpy as np import matplotlib.pyplot as plt from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout # 设置数据路径 train_dir = 'flower_photos/train' val_dir = 'flower_photos/val' test_dir = 'flower_photos/test' # 数据增强 train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) val_datagen = ImageDataGenerator(rescale=1./255) test_datagen = ImageDataGenerator(rescale=1./255) # 加载数据 train_data = train_datagen.flow_from_directory( train_dir, target_size=(224, 224), batch_size=32, class_mode='categorical') val_data = val_datagen.flow_from_directory( val_dir, target_size=(224, 224), batch_size=32, class_mode='categorical') test_data = test_datagen.flow_from_directory( test_dir, target_size=(224, 224), batch_size=32, class_mode='categorical') # 构建模型 model = Sequential() model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(128, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(128, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(512, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(5, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 history = model.fit_generator( train_data, steps_per_epoch=100, epochs=20, validation_data=val_data, validation_steps=50) # 评估模型 score = model.evaluate_generator(test_data, steps=50) print('Test loss:', score[0]) print('Test accuracy:', score[1]) # 绘制训练曲线 acc = history.history['accuracy'] val_acc = history.history['val_accuracy'] loss = history.history['loss'] val_loss = history.history['val_loss'] epochs = range(1, len(acc) + 1) plt.plot(epochs, acc, 'bo', label='Training acc') plt.plot(epochs, val_acc, 'b', label='Validation acc') plt.title('Training and validation accuracy') plt.legend() plt.figure() plt.plot(epochs, loss, 'bo', label='Training loss') plt.plot(epochs, val_loss, 'b', label='Validation loss') plt.title('Training and validation loss') plt.legend() plt.show() ``` 这份代码使用了四个卷积层和两个全连接层,其中卷积层使用了ReLU激活函数,全连接层使用了Dropout防止过拟合。训练过程中使用了数据增强技术,同时在训练后绘制了训练曲线以分析模型的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值