当前位置: 首页 > article >正文

tf.Keras (tf-1.15)使用记录1-基础模型创建的两种方法

tf.keras有两种神经网络的创建方法,分别是基于sequential的方式创建和基于functional的方式创建。其中基于functional的方式创建更为灵活,更容易自定义网络中的细节;基于sequential的方式创建则更加简单。

1)基于sequential方式处理pd数据示例:更简单

不需要定义和处理输入输出,以及内部的数据流。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow as tf

# 生成数据并转化为pandas
X = np.random.randn(1000, 2)
Y = (X[:, 0] + X[:, 1] > 0).astype(int)
df = pd.DataFrame(X, columns=['feature1', 'feature2'])
df['target'] = Y

# 分割数据
X_train, X_test, y_train, y_test = train_test_split(df[['feature1', 'feature2']], df['target'], test_size=0.2, random_state=42)

# tf.keras模型定义
# 构建Sequential模型
model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, activation='relu', input_shape=(2,)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.3),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.1, verbose=1)

# 预测
preds = model.predict(X_test)

2)基于functional方式处理pd数据示例:更灵活

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow as tf

# 生成数据并转化为pandas
X = np.random.randn(1000, 2)
Y = (X[:, 0] + X[:, 1] > 0).astype(int)
df = pd.DataFrame(X, columns=['feature1', 'feature2'])
df['target'] = Y

# 分割数据
X_train, X_test, y_train, y_test = train_test_split(df[['feature1', 'feature2']], df['target'], test_size=0.2, random_state=42)

# tf.keras模型定义
# 构建Functional API模型
def get_my_model(input_dim):
    inputs = tf.keras.Input(shape=(input_dim,))
    x = tf.keras.layers.Dense(64, activation='relu')(inputs)
    x = tf.keras.layers.BatchNormalization()(x)
    x = tf.keras.layers.Dropout(0.3)(x)
    x = tf.keras.layers.Dense(32, activation='relu')(x)
    x = tf.keras.layers.BatchNormalization()(x)
    x = tf.keras.layers.Dropout(0.3)(x)    
    outputs = tf.keras.layers.Dense(1, activation='sigmoid')(x)
    model = tf.keras.Model(inputs=inputs, outputs=outputs)
    model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
    return model

# 编译模型
model = get_my_model(2)

# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.1, verbose=1)

# 预测
preds = model.predict(X_test)

http://www.kler.cn/a/529304.html

相关文章:

  • 基于Python的简单企业维修管理系统的设计与实现
  • UE 5.3 C++ 对垃圾回收的初步认识
  • Alibaba开发规范_编程规约之命名风格
  • 「全网最细 + 实战源码案例」设计模式——桥接模式
  • 稀疏混合专家架构语言模型(MoE)
  • MiniMind——跑通项目
  • 【股票数据API接口48】如何获取股票最新分时BOLL数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • 【Python】理解Python中的协程和生成器:从yield到async
  • PostgreSQL 数据库备份与还原
  • 如何使用SliverList组件
  • 数据分析系列--⑨RapidMiner训练集、测试集、验证集划分
  • 拉格朗日定理
  • C++编程语言:抽象机制:模板(Bjarne Stroustrup)
  • 【网站建设:HTTPS - 如何生成免费SSL证书,并自动更新】
  • 【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具01
  • RabbitMQ持久化队列配置修改问题
  • python-leetcode-二叉搜索树迭代器
  • 基于微信小程序的酒店管理系统设计与实现(源码+数据库+文档)
  • maven构件子模块步骤及注意事项
  • w185客户关系管理系统
  • AIGC技术中常提到的 “嵌入转换到同一个向量空间中”该如何理解
  • Golang 应用的 Docker 部署方式介绍及使用详解
  • 深入解析JMeter源码:AbstractThreadGroupGui抽象类的实现机制与设计哲学
  • MySQL 基础学习(5):数据库约束
  • Epoll编程——流程、易错、关键参数
  • 【C++ 区间位运算】3209. 子数组按位与值为 K 的数目|2050