从零开始入门python深度学习(二):来用Python和Pycharm完成你的第一个深度学习模型!

2022年8月21日 258点热度 0人点赞 0条评论

前言

生信作曲家一直致力于构建国内和谐、开放、可持续的生物信息交流平台。生信作曲家的目标是为每个科研人扫清科研路上的一切障碍,让生物信息学人人可做。目前,生信作曲家已推出"跟着一区文章学通机器学习""跟着一区文章学通单细胞",Bootstrap,CIBERSORTx, NTP, TICPE,metaVIPER算法等多种强力教程,同时也兼具GEO数据库ICGC数据库数据整理等核心入门技术教学,开办7天发文A计划,五一创新发文计划pro,生信中秋分享会、小年夜分享会、暑期集训营和冬季集训营等多次。辅导同学实现纯生信SCI发表硕果累累。

关于python和深度学习的教程已经屡见不鲜了,生信作曲家从本辑开始将致力于推广可以被普通的医学科研人员所接受的python深度学习教程。本教程使用的框架是keras,运行载体是pycharm,基础教程的部分参考《深度学习:基于Keras的Python实践(魏贞原)》一书,有兴趣的读者可以更进一步参考。所使用的案例基本也是医学相关的案例。我们将从神经网络基础出发,一步步深入到医学影像系统的识别


本节,我们将进入第一个python神经网络模型(多层感知机),我们将通过印第安人群医疗基线数据预测是否患有糖尿病,变量名如下。数据阅读原文下载,提取码:deep

代码实操

# alt+shift+e载入包
from keras.models import Sequential
from keras.layers import Dense
import numpy as np

# 设定随机数种子
np.random.seed(7)
import tensorflow as tf

# 导入数据
dataset = np.loadtxt('d:/pythonlearning/pima-indians-diabetes.csv', delimiter=',')
# 分割输入x和输出Y
x = dataset[:, 0 : 8]
Y = dataset[:, 8]

## 可以像Rstudio一样,在右下方观察数据,python不再难学


# 创建模型
# Keras 中的模型被定义为层序列
model = Sequential()
# 使用 input_dim 参数创建第一层,并将其设置为 8,表示输入层有8个输入变量,这与数据的维度一致
# 寻找最优的网络拓构是一个试锚的过程,需要通过进行一系列的试验 。为了简化这个过程 使用三层完全连接的网络结构
# 具体用多少unit数,对于是要调参的,此处用8-12-8-1层,其中第一个8 是确定的,最后1是确定的,中间两个可以换,影响不大
model.add(Dense(12, input_dim=8, activation='relu'))
# 常使用 Dense 类来定义完全连接的层
model.add(Dense(8, activation='relu'))
# 使用 ReLU 作为前两层的激活函数,使用 sigmoid 作为输出层的激活函数
# 分类 输出层通常采用 sigmoid 作为激活函数,
model.add(Dense(1, activation='sigmoid'))

# 编译模型
# 编译模型是为了使模型能够有效地使用Keras 封装的数值计算
# keras 中,对于二进制分类问题的对数损失函数被定义为二进制交叉熵 使用有效的梯度下降算法 adam 为优化器
# 采用分类准确度作为度量模型的标准
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型
# 训练过程将采用 epoch 参数,对数据集进行固定次数的迭代
# 要设置在执行神经网络中的权重更新的每个批次中所用实例的个数batch_ size,用小一点
model.fit(x=x, y=Y, epochs=150, batch_size=10)

# 评估模型,前面unit数改变,总体影响是不大的,都是75%左右
scores = model.evaluate(x=x, y=Y)
print('\n%s : %.2f%%' % (model.metrics_names[1], scores[1]*100))

89160从零开始入门python深度学习(二):来用Python和Pycharm完成你的第一个深度学习模型!

这个人很懒,什么都没留下

文章评论