python3+TensorFlow 2.x(二) 回归模型

TensorFlow2.x的安装 包含Anaconda的安装,conda的换源与pip的换源等问题。 阅读详情

目录

回归算法

1、线性回归 (Linear Regression)

一元线性回归举例

二元线性回归

2、非线性回归

3、回归分类


回归算法

回归算法用于预测连续的数值输出。回归分析的目标是建立一个模型,以便根据输入特征预测目标变量,在使用 TensorFlow 2.x 实现线性回归模型时,通常的步骤包括数据预处理、模型构建、训练和评估。

1、线性回归 (Linear Regression)

概述:线性回归是最基本的回归算法之一,假设目标变量与输入特征之间存在线性关系。

模型形式:y=\beta _{0}+\beta _{1}x_{1}+...+\beta _{n}x_{n}+ϵ,其中 y 是目标变量,x​ 是特征,βi是权重,ϵ 是误差项。

一元线性回归举例

实现步骤:

导入必要的库。
生成或加载数据预处理:使用生成的线性数据集。生成了一个简单的线性关系 y = 2x + 1,并加上了一些噪声来模拟实际的观测数据。np.linspace 生成 100 个从 0 到 10 的点,np.random.normal 用于生成随机噪声。数据处理:使用 X.reshape(-1, 1) 将 X 变成二维数组,以适应 TensorFlow 的输入要求。

构建线性回归模型:使用 tf.keras.Sequential 创建一个简单的线性模型。只使用一个 Dense 层来表示线性回归,其中 input_dim=1 指明输入特征的维度为 1,output_dim=1 表示输出只有一个预测值。        

编译模型:设置损失函数和优化器。使用了 adam 优化器,这是一个常用且效果不错的优化器。损失函数选择 mean_squared_error,这是回归问题中常见的损失函数。

训练模型:使用训练数据来训练模型。model.fit 方法用于训练模型。设置了 200 个 epoch 和10 的批次大小。

评估模型:通过测试数据评估模型性能。model.evaluate 会返回训练集的损失值,用来评估训练过程中的效果.

预测结果:使用训练好的模型进行预测。使用 matplotlib 绘制训练过程中每个 epoch 的损失变化情况,以便观察模型训练的收敛过程,使用 model.predict 来预测训练集上的输出,然后将预测结果与真实数据一起绘制出来,查看模型的拟合效果

import numpy as np
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt

# 1. 生成数据:y = 2x + 1
np.random.seed(42)
X = np.linspace(0, 10, 100)  # 生成100个点,范围是[0, 10]
Y = 2 * X + 1 + np.random.normal(0, 1, X.shape[0])  # y = 2x + 1,加上一些噪声

# 2. 数据预处理:将数据转化为TensorFlow的张量(也可以直接使用NumPy数组)
X_train = X.reshape(-1, 1)  # 特征,转换成二维数组
Y_train = Y.reshape(-1, 1)  # 标签,转换成二维数组

# 3. 构建线性回归模型
model = keras.Sequential([
    keras.layers.Dense(1, input_dim=1)  # 只有一个输入特征,输出一个值
])

# 4. 编译模型:选择损失函数和优化器
model.compile(optimizer='adam', loss='mean_squared_error')

# 5. 训练模型
history = model.fit(X_train, Y_train, epochs=200, batch_size=10, verbose=0)

# 6. 评估模型
loss = model.evaluate(X_train, Y_train)
print(f"Final training loss: {loss}")

# 7. 绘制训练过程中的损失变化
plt.plot(history.history['loss'])
plt.title('Training Loss Over Epochs')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.show()

# 8. 预测结果
Y_pred = model.predict(X_train)

# 9. 可视化真实数据和预测结果
plt.scatter(X_train, Y_train, color='blue', label='Actual Data')
plt.plot(X_train, Y_pred, color='red', label='Predicted Line')
plt.title('Linear Regression with TensorFlow 2')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()

二元线性回归

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# ==================== 1. 生成模拟数据 ====================
np.random.seed(42)
n_samples = 100
X1 = np.random.rand(n_samples) * 10  # 第一个特征
X2 = np.random.rand(n_samples) * 5   # 第二个特征
noise = np.random.randn(n_samples) * 2  # 噪声

# 真实参数:y = 3*X1 + 5*X2 + 10 + noise
y = 3 * X1 + 5 * X2 + 10 + noise

# 拼接特征矩阵 (添加偏置项)
X = np.column_stack((np.ones(n_samples), X1, X2))

# ==================== 2. 定义损失函数 ====================
def compute_loss(X, y, theta):
    residuals = X.dot(theta) - y
    return (residuals**2).mean()  # MSE

# ==================== 3. 梯度下降实现 ====================
def gradient_descent(X, y, learning_rate=0.01, n_iters=100):
    n_features = X.shape[1]
    theta = np.zeros(n_features)  # 初始化参数 [w0, w1, w2]
    loss_history = []
    
    for _ in range(n_iters):
        gradients = 2/X.shape[0] * X.T.dot(X.dot(theta) - y)
        theta -= learning_rate * gradients
        loss_history.append(compute_loss(X, y, theta))
    
    return theta, loss_history

# 训练模型
theta, loss_history = gradient_descent(X, y, learning_rate=0.01, n_iters=200)

# ==================== 4. 可视化 ====================
plt.figure(figsize=(18, 6))

# 子图1:损失函数下降曲线
plt.subplot(1, 3, 1)
plt.plot(loss_history, 'b-o', linewidth=2, markersize=4)
plt.title('损失函数下降曲线', fontsize=14)
plt.xlabel('迭代次数', fontsize=12)
plt.ylabel('MSE损失', fontsize=12)
plt.grid(True)

# 子图2:真实值 vs 预测值
plt.subplot(1, 3, 2)
y_pred = X.dot(theta)
plt.scatter(y, y_pred, c='r', edgecolors='k')
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', linewidth=2)
plt.title('真实值 vs 预测值', fontsize=14)
plt.xlabel('真实值', fontsize=12)
plt.ylabel('预测值', fontsize=12)
plt.grid(True)

# 子图3:3D回归平面
plt.subplot(1, 3, 3, projection='3d')
ax = plt.gca()
ax.scatter(X1, X2, y, c='b', label='真实数据')
ax.set_xlabel('特征X1', fontsize=12)
ax.set_ylabel('特征X2', fontsize=12)
ax.set_zlabel('y值', fontsize=12)

# 绘制回归平面
x1_range = np.linspace(X1.min(), X1.max(), 20)
x2_range = np.linspace(X2.min(), X2.max(), 20)
X1_mesh, X2_mesh = np.meshgrid(x1_range, x2_range)
y_mesh = theta[0] + theta[1]*X1_mesh + theta[2]*X2_mesh
ax.plot_surface(X1_mesh, X2_mesh, y_mesh, alpha=0.5, cmap=cm.coolwarm)
plt.title('3D回归平面', fontsize=14)

plt.tight_layout()
plt.show()

# ==================== 5. 打印结果 ====================
print(f"真实参数:截距=10, w1=3, w2=5")
print(f"学习到的参数:截距={theta[0]:.2f}, w1={theta[1]:.2f}, w2={theta[2]:.2f}")
print(f"最终MSE损失:{loss_history[-1]:.2f}")

 

2、非线性回归

创建合成数据集:使用 NumPy 生成从 -3 到 3 的 100 个点,并计算对应的 y 值为sin(x) 加上一些噪声。

划分训练集和测试集:使用 train_test_split 将数据集划分为训练集和测试集,比例为 80% 训练,20% 测试。

构建曲线拟合模型:使用 tf.keras.Sequential 创建一个简单的神经网络模型,包含两个隐藏层,每层有 64 个神经元,激活函数为 ReLU,最后一层为输出层。

编译模型:使用 Adam 优化器和均方误差损失函数编译模型。

训练模型:使用 fit 方法训练模型,设置训练轮数为 200,批次大小为 10。

进行预测:使用 predict 方法对测试集进行预测。可视化预测结果,使用 Matplotlib 绘制实际值和预测值的散点图。

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

# 1. 创建合成数据集
np.random.seed(0)
X = np.linspace(-3, 3, 100)  # 生成从-3到3的100个点
y = np.sin(X) + np.random.normal(0, 0.1, X.shape)  # y = sin(x) + 噪声

# 2. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 3. 构建曲线拟合模型
# 将输入数据转换为二维数组
X_train = X_train.reshape(-1, 1)
X_test = X_test.reshape(-1, 1)

model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, activation='relu', input_shape=(1,)),  # 隐藏层
    tf.keras.layers.Dense(64, activation='relu'),  # 隐藏层
    tf.keras.layers.Dense(1)  # 输出层
])

# 4. 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')

# 5. 训练模型
model.fit(X_train, y_train, epochs=200, batch_size=10, verbose=0)

# 6. 进行预测
predictions = model.predict(X_test)

# 7. 可视化预测结果
plt.figure(figsize=(10, 6))
plt.scatter(X_test, y_test, color='blue', label='Actual Values')  # 实际值
plt.scatter(X_test, predictions, color='red', label='Predicted Values')  # 预测值
plt.title('Curve Fitting Regression')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.grid()
plt.show()

3、回归分类

分类问题:

分类问题和回归问题有一定的相似性,都是通过对数据集的学习来对未知结果进行预测,区别在于输出值不同。分类问题的输出值是离散值(如垃圾邮件和正常邮件)。回归问题的输出值是连续值(例如房子的价格)。

二分类问题:表示分类任务中有两个类别新的样本属于哪种已知的样本类。如垃圾邮件识别,可以作为二分类问题,将邮件分为你「垃圾邮件」或者「正常邮件」。

多类分类(Multiclass Classification)问题:表示分类任务中有多类别。如图像内容识别:因为图像的内容种类不止一个,图像内容可能是猫、狗、人等等,因此是多类分类问题。

多标签分类(Multilabel Classification)问题:给每个样本一系列的目标标签。文本情感分析:既可以作为二分类问题,将情感分为褒贬两种,还可以作为多类分类问题,将情感种类扩展,比如分为:十分消极、消极、积极、十分积极等。

import numpy as np
import tensorflow as tf
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification, make_regression
import matplotlib.pyplot as plt

# 生成回归数据集
X_reg, y_reg = make_regression(n_samples=1000, n_features=1, noise=10, random_state=42)

# 生成分类数据集
X_class, y_class = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=42)

# 划分训练集和测试集
X_reg_train, X_reg_test, y_reg_train, y_reg_test = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)
X_class_train, X_class_test, y_class_train, y_class_test = train_test_split(X_class, y_class, test_size=0.2, random_state=42)

# 创建线性回归模型
model_reg = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(1,))  # 输入特征为 1,输出为 1
])

# 编译模型
model_reg.compile(optimizer='adam', loss='mean_squared_error')

# 训练模型
model_reg.fit(X_reg_train, y_reg_train, epochs=100, batch_size=32, verbose=1)

# 评估模型
loss_reg = model_reg.evaluate(X_reg_test, y_reg_test, verbose=0)
print(f'回归模型测试集损失: {loss_reg:.4f}')

# 可视化回归结果
plt.scatter(X_reg, y_reg, color='blue', label='Data points')
plt.scatter(X_reg_test, model_reg.predict(X_reg_test), color='red', label='Predictions')
plt.title('Linear Regression Results')
plt.xlabel('Feature')
plt.ylabel('Target')
plt.legend()
plt.show()

# 创建逻辑回归模型
model_class = tf.keras.Sequential([
    tf.keras.layers.Dense(1, activation='sigmoid', input_shape=(2,))  # 输入特征为 2,输出为 1
])

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

# 训练模型
model_class.fit(X_class_train, y_class_train, epochs=100, batch_size=32, verbose=1)

# 评估模型
loss_class, accuracy_class = model_class.evaluate(X_class_test, y_class_test, verbose=0)
print(f'分类模型测试集损失: {loss_class:.4f}, 测试集准确率: {accuracy_class:.4f}')

# 可视化分类数据点
plt.scatter(X_class_train[y_class_train == 0][:, 0], X_class_train[y_class_train == 0][:, 1], color='blue', label='Class 0', alpha=0.5)
plt.scatter(X_class_train[y_class_train == 1][:, 0], X_class_train[y_class_train == 1][:, 1], color='red', label='Class 1', alpha=0.5)

# 绘制决策边界
x_min, x_max = X_class[:, 0].min() - 1, X_class[:, 0].max() + 1
y_min, y_max = X_class[:, 1].min() - 1, X_class[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))
Z = model_class.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, levels=[0, 0.5, 1], alpha=0.2, colors=['blue', 'red'])
plt.title('Logistic Regression Decision Boundary')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend()
plt.show()

make_classification 是 sklearn.datasets 模块中的一个函数,用于生成用于分类的合成数据集。可以通过不同的参数来控制生成数据的特性。

参数解释:n_samples: 生成的样本数量。
n_features: 特征的总数。设置为 2,表示每个样本有 2 个特征。
n_informative: 有效特征的数量,这些特征对分类任务有贡献。设置为 2,表示所有特征都是有效特征。
n_redundant: 冗余特征的数量,这些特征是通过线性组合生成的有效特征。设置为 0,表示没有冗余特征。
n_clusters_per_class: 每个类别的聚类数量。设置为 1,表示每个类别只有一个聚类。
random_state: 随机种子,用于确保结果的可重复性。设置为 42。

make_regression 是 sklearn.datasets 模块中的一个函数,用于生成用于回归的合成数据集。

参数解释:n_samples: 生成的样本数量。
n_features: 特征的总数。比如设置为 1,表示每个样本有 1 个特征。
n_informative: 有效特征的数量,这些特征对目标变量有贡献。比如设置为 1,表示所有特征都是有效特征。
n_targets: 目标变量的数量。默认值为 1,表示生成一个目标变量。
bias: 截距项,表示模型的偏置。可以设置为一个常数,比如 0。
noise: 添加到输出中的噪声的标准差。可以设置为一个浮点数,如 0.1表示添加一定的随机噪声。
random_state: 随机种子,用于确保结果的可重复性。可以设置为一个整数,比如 42。

既然分类和回归有一定相似性可以想到的一种尝试思路是,先用线性拟合,然后对线性拟合的预测结果值进行量化,即将连续值量化为离散值——即使用『线性回归+阈值』解决分类问题。


import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from sklearn.preprocessing import StandardScaler
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 设置随机种子保证可重复性
np.random.seed(42)
tf.random.set_seed(42)

# ==================== 1. 生成模拟数据 ====================
# 正常肿瘤数据(1-5cm)
X_normal = np.random.uniform(1, 5, 50)
y_normal = np.where(X_normal > 3, 1, 0)  # >3cm为恶性

# 添加一个异常点(8cm的恶性肿瘤)
X = np.append(X_normal, [8])
y = np.append(y_normal, 1)

# 标准化数据(逻辑回归需要,线性回归不需要但为了公平对比)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X.reshape(-1, 1)).flatten()

# ==================== 2. 线性回归+阈值 ====================
# 添加偏置项
X_linear = np.column_stack((np.ones(len(X)), X))

# 最小二乘法求解
theta = np.linalg.inv(X_linear.T.dot(X_linear)).dot(X_linear.T).dot(y)

# 预测函数
def linear_predict(x):
    return theta[0] + theta[1]*x

# 将线性回归输出通过sigmoid映射到0-1(仅用于对比)
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# ==================== 3. 逻辑回归 ====================
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(1,), activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy')
model.fit(X_scaled, y, epochs=100, verbose=0)

# ==================== 4. 可视化对比 ====================
plt.figure(figsize=(15, 6))

# 生成测试点
x_test = np.linspace(0, 9, 100)

# 子图1:线性回归+阈值
plt.subplot(1, 2, 1)
plt.scatter(X[y==1], y[y==1], c='red', marker='x', label='恶性(真实)')
plt.scatter(X[y==0], y[y==0], c='green', marker='o', label='良性(真实)')

# 绘制线性回归输出
linear_output = linear_predict(x_test)
plt.plot(x_test, linear_output, 'blue', label='线性回归输出')

# 绘制sigmoid映射后的概率
plt.plot(x_test, sigmoid(linear_output), 'purple', label='线性回归+Sigmoid')

# 标记异常点(8cm肿瘤)
plt.scatter([8], [1], s=200, facecolors='none', edgecolors='black', linewidths=2, label='异常点(8cm)')

plt.axhline(y=0.5, color='gray', linestyle='--', label='阈值=0.5')
plt.title('线性回归+阈值分类\n异常点导致决策边界偏移', fontsize=14)
plt.xlabel('肿瘤大小(cm)', fontsize=12)
plt.ylabel('输出值/概率', fontsize=12)
plt.legend()

# 子图2:逻辑回归
plt.subplot(1, 2, 2)
plt.scatter(X[y==1], y[y==1], c='red', marker='x', label='恶性(真实)')
plt.scatter(X[y==0], y[y==0], c='green', marker='o', label='良性(真实)')

# 绘制逻辑回归预测概率
x_test_scaled = scaler.transform(x_test.reshape(-1, 1)).flatten()
logistic_probs = model.predict(x_test_scaled).flatten()
plt.plot(x_test, logistic_probs, 'blue', label='逻辑回归概率')

# 标记异常点(8cm肿瘤)
plt.scatter([8], [1], s=200, facecolors='none', edgecolors='black', linewidths=2, label='异常点(8cm)')

plt.axhline(y=0.5, color='gray', linestyle='--', label='阈值=0.5')
plt.title('逻辑回归分类\n对异常点更鲁棒', fontsize=14)
plt.xlabel('肿瘤大小(cm)', fontsize=12)
plt.ylabel('预测概率', fontsize=12)
plt.legend()

plt.tight_layout()
plt.show()

# ==================== 5. 打印关键点预测结果 ====================
print("=== 关键点预测对比 ===")
print(f"线性回归对8cm肿瘤的原始输出: {linear_predict(8):.2f}")
print(f"线性回归+Sigmoid对8cm肿瘤的概率: {sigmoid(linear_predict(8)):.2f}")
print(f"逻辑回归对8cm肿瘤的预测概率: {model.predict(scaler.transform([[8]]))[0][0]:.2f}")

线性回归的局限性

输出无界,异常值会显著影响模型参数,即使通过Sigmoid映射,决策边界仍会偏移,不适合直接用于概率估计

逻辑回归的优势

输出天然是概率值(0-1之间),使用交叉熵损失函数,对异常值更鲁棒,适合处理分类问题,尤其是需要概率输出的场景

实际应用建议

分类问题优先选择逻辑回归,线性回归可用于回归任务或作为逻辑回归的初始化,异常值处理是建模的重要环节。

import numpy as np
import matplotlib.pyplot as plt

# 生成简单线性可分数据(单特征)
np.random.seed(0)
num_samples = 100
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 类别0,均值1,标准差0.5
X0 = np.random.normal(1, 0.5, num_samples//2)
y0 = np.zeros(num_samples//2)

# 类别1,均值3,标准差0.5
X1 = np.random.normal(3, 0.5, num_samples//2)
y1 = np.ones(num_samples//2)

# 合并数据
X = np.hstack((X0, X1))
y = np.hstack((y0, y1))

# 转换成列向量形式,方便矩阵运算
X = X.reshape(-1, 1)
y = y.reshape(-1, 1)

# 添加偏置项(常数1列)
X_bias = np.hstack((np.ones_like(X), X))  # shape: (num_samples, 2)

# Sigmoid函数
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 交叉熵损失函数
def compute_loss(y_true, y_pred):
    # 避免log(0)数值不稳定,加一个极小值epsilon
    epsilon = 1e-15
    y_pred = np.clip(y_pred, epsilon, 1 - epsilon)
    loss = -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))
    return loss

# 训练参数初始化
np.random.seed(42)
weights = np.random.randn(2, 1) * 0.01  # 包含偏置权重,shape=(2,1)

# 超参数
learning_rate = 0.1
num_epochs = 200

loss_history = []

# 训练过程
for epoch in range(num_epochs):
    # 前向传播:计算线性组合 z = X_bias * weights
    z = np.dot(X_bias, weights)  # shape: (num_samples, 1)

    # 计算预测概率
    y_pred = sigmoid(z)

    # 计算损失
    loss = compute_loss(y, y_pred)
    loss_history.append(loss)

    # 反向传播:计算梯度
    # 梯度 = X_bias.T * (y_pred - y) / num_samples
    grad = np.dot(X_bias.T, (y_pred - y)) / num_samples

    # 更新权重
    weights -= learning_rate * grad

    # 每20轮打印一次损失
    if (epoch + 1) % 20 == 0:
        print(f"Epoch {epoch+1}/{num_epochs}, Loss: {loss:.4f}")

# 训练完成,打印最终权重
print(f"训练完成,权重参数:\n{weights.flatten()}")

# 预测函数
def predict(X_input):
    X_input_bias = np.hstack((np.ones((X_input.shape[0], 1)), X_input))
    probs = sigmoid(np.dot(X_input_bias, weights))
    return (probs >= 0.5).astype(int), probs

# 画拟合曲线和损失变化图
plt.figure(figsize=(12,5))

# 子图1:数据点和拟合曲线
plt.subplot(1, 2, 1)
plt.scatter(X[y.flatten()==0], y[y.flatten()==0], color='blue', label='类别 0')
plt.scatter(X[y.flatten()==1], y[y.flatten()==1], color='red', label='类别 1')

# 生成平滑的X用于画拟合概率曲线
X_plot = np.linspace(X.min()-1, X.max()+1, 200).reshape(-1, 1)
_, probs_plot = predict(X_plot)
plt.plot(X_plot, probs_plot, color='green', label='预测概率曲线')

plt.xlabel('特征 X')
plt.ylabel('类别 / 预测概率')
plt.title('逻辑回归拟合曲线')
plt.legend()
plt.grid(True)

# 子图2:损失变化曲线
plt.subplot(1, 2, 2)
plt.plot(range(num_epochs), loss_history, color='purple')
plt.xlabel('训练轮数 (Epoch)')
plt.ylabel('交叉熵损失')
plt.title('训练损失变化')
plt.grid(True)

plt.tight_layout()
plt.show()

逻辑回归的损失函数:

经过Sigmoid 函数的变换使得均方误差这种损失函数不光滑凹凸不平,可能多个局部最优解而找不到全局最优值,使用对数损失函数(二元交叉熵损失),这个损失函数同样能很好地衡量参数好坏,又能保证凸函数的特性。对数损失函数的公式如下:

仍然使用梯度下降寻找最优解的参数。

tensorflow2.X, TensorFlow Addons 版本的匹配选择 tensorflow, keras, tensorflow addons, python版本匹配选择 阅读详情

相关推荐

Anaconda python3.7 安装TensorFlow-1.x/2.x均可

python3.7 安装TensorFlow-1.x/2.x均可步骤安装anaconda创建虚拟环境安装tensorflow在jupyter notebook中使用TensorFlow 步骤 安装TensorFlow真是天坑,在查阅了N多资料,翻车N次之后总结出了方法,分享给大家。亲测有效,已成功安装TensorFlow1.10.0以及Tensorflow2.0.0。十分方便学习! 安装anaco...

weixin_39337814的博客 1748

python3.12安装不上tensorflow的原因

因为tensorflow现在只支持到3.11,2023年12月17日。

heigoukh的博客 4193

TensorFlow2 入门指南 | 01 浅谈 TensorFLow2 入门

还在学TensorFlow1.x,你out了!大佬们都在用Tensorflow2了!

不积跬步,无以至千里! 7497

tensorflow安装(非教程)

最近深受版本之扰,故而一怒之下卸载了所有东西,全部重新安装(也许不用全部卸载的,但是一看它们就来气)看了很多大佬的文章,总结了一些小东西,以备不时之需tensorflow下载看这个大佬的文章就行,我感觉已经很详细了,我的东西也基本上就是从他/她这里总结出来的。

weixin_56735768的博客 2552

Windows下Python的虚拟环境安装Tensorflow 1.x与Tensorflow 2.x版本

要实现Tensorflow 1.x与Tensorflow 2.x版本并存,我们安装一个Python的虚拟环境,兼容Tensorlfow的各个版本,在本地电脑上运行多个Python环境: (1)Tensorflow 2.x的系统运行环境,用于cs294(cs285)等课程的实践。 (2)Tensorflow 1.x的虚拟运行环境,用于自然语言处理条件随机场的应用。 Python...

大模型与Agent智能体 2185

保姆级教程:用Fiddler+夜神模拟器搞定抖音App抓包(附SSL Pinning绕过实战)

本文提供了一套完整的移动端抓包解决方案,详细介绍了如何使用Fiddler和夜神模拟器进行抖音App抓包,并重点讲解了SSL Pinning绕过技术。通过Xposed框架和JustTrustMe模块的组合,实现高效抓包,适用于产品分析、竞品研究和安全测试等场景。

weixin_30855099的博客 423

关于python版本与TensorFlow安装的版本问题

实测在conda环境下,python3.12的版本无法安装TensorFlow2.14.0(截至2024.5.21)最新版本。ps:上述安装均在anaconda navigator软件内安装。在python3.7版本下正常安装。

2302_80327119的博客 3287

为什么你的SiC MOSFET仿真不准?可能是离子注入的‘沟道效应’在捣鬼(Silvaco BCA模块详解)

本文深入分析了SiC MOSFET仿真中离子注入沟道效应的关键影响,揭示了Silvaco BCA模块在模拟SiC晶向和角度参数时的核心设置要点。通过详细解析晶圆偏切与注入角度的等效关系,提供优化MOSFET沟道区注入仿真的五步实战方法,帮助工程师将阈值电压仿真误差从26%降低到5%以内。

weixin_26789847的博客 410

Tensorflow与Python、CUDA、cuDNN的版本对应表

要在 Windows 上使用 TensorFlow GPU,您需要在 WSL2 中构建/安装 TensorFlow,或者使用 tensorflow-cpu 配合 TensorFlow-DirectML-Plugin。上面的小版本号个人认为可以忽略不计,可以理解为下表的示例内容,需要注意的是TF1.x已经停止更新故对新硬件(主要是RTX30系列之后的显卡)不支持,故需要使用。TensorFlow,或者使用 tensorflow-cpu 配合 TensorFlow-DirectML-Plugin。

LanSeShuiBeiHD的专栏 7680

大华摄像头GB28181协议接入EasyCVR全流程(附常见错误排查)

本文详细阐述了大华摄像头通过GB28181协议接入EasyCVR视频管理平台的全流程,涵盖从核心原理、前期参数规划、Web界面配置到平台侧验证的完整步骤。重点针对网络端口、SIP参数配置等关键环节提供了深度排错指南,并总结了设备无法注册、在线不稳定、拉流失败等常见问题的排查思路与解决方案,旨在帮助安防工程师与系统集成商高效完成设备接入与调试。

weixin_29279153的博客 310

银河麒麟V10 SP3离线安装Nginx1.21.5全记录(附11个rpm包下载清单)

本文详细记录了在银河麒麟V10 SP3操作系统上离线安装Nginx 1.21.5的全过程,包括11个必备rpm包的下载清单。通过分步骤的实战指南,帮助用户在国产化环境中高效部署Nginx服务,涵盖安装、配置、调优及故障排查等关键环节,特别适合金融、政务等对安全性要求高的场景。

weixin_30872337的博客 606

在虚拟环境中,通过pip安装tensorflow

使用pip安装tensorflow。

u011375991的博客 860

Unity3D赛车游戏+脚本基础

本章主要介绍Unity的基础开发流程以及涉及到的概念。这个过程需要我们学会编写一些游戏脚本,在这讲的过程中我们会完成一个赛车小游戏,因此,在讲述这些基本概念和流程的时候,会同时涉及到一点脚本的开发基础.在游戏,电影和动画中,都有一个渲染的帧率,电影是24帧/s,游戏大概是30帧/s(当然也有60帧/s的)。在unity里面1秒钟,Update方法执行了30次。1秒钟有30帧,帧与帧之所消耗的时间是不一样的,那么我如何知道上一帧用了多少时间?Time.deltaTime就是为了解决这个问题。

m0_58367586的博客 7660

[深度学习] tensorflow1.x和tensorflow2.x对比与总结

tensorflow1.x和tensorflow2.x对比与总结1. 背景介绍2. 易于使用(Ease of use)3. 使用Eager模式(Eager Execution)4. 建立模型和部署变得容易(Model Building and deploying made easy)5. 简化了数据管道(The Data pipeline simplified)6. 一些重要的点是:7. 总结参考...

Harry的博客 1万+

【定位教程2----旋转中心标定之方法一】

【定位教程2----旋转中心标定之方法一】

Quintin 3万+

YOLO26全网首发:CVPR2026 FAA| 解决YOLO Neck跨尺度方向冲突--- FAAFusion频域对齐融合模块 | 暴力涨点篇

本文改进:FAAFusion引入YOLO neck ,代替nn.Upsample和Concat

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 644

Python基于TensorFlow实现CNN-Transformer回归模型项目实战

Python基于TensorFlow实现CNN-Transformer回归模型项目实战

张陈亚的博客 1518

CKS-CN考试之路----02

其实我们根据题目也可以知道秘钥是叫clever-cactus。稍作等待后,确认pod的状态,如果是1/1基本就没问题了。这步不一定做.目的是确定秘钥的名字。

Q先生 656

Windows环境下python3.7安装TensorFlow(超简单)

一、下载 首先去 https://pypi.org/project/tensorflow/#files 官网下载 点击 Download files之后 ,会有下面的选择 由于我的是python3.7版本,并且是64位系统,所以我选择了标黄的文件,选择自建的一个文件 F:\TensorFlow_ing 进行下载。 二、安装 打开控制台cmd,cd进入你下载的 tensorflow-1.13.1-...

小白tree的博客 4万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

前言、为什么要学习TensorFlow2.x

其实在很久之前小编就想开设这样一个专栏了,毕竟TensorFlow2.x已经问世很久了。跟1.x相比,它真是有了太大的变化,现在TensorFlow已经到了2.4.0的版本了,所以小编就想总结一下,开始适应全新的2.x系列。本文算是整个专栏的开篇吧,除了论述之外,本文还会给出一个小编之前使用1.x版本的例子,以及小编是如何将例子中的代码修改使其适用于2.x版本的。下面就要开始我们的TensorFlow2.x的学习之旅了。关注专栏《一起来学TensorFlow2.x》,解锁更多相关内容~ ..

象在舞的技术专栏 6815

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jetpack 4.2体验 在jetson tx2上使用python3调用tensorRT推理tensorflow模型

jetpack 4.2安装和体验引言安装下载sdkmanager登陆选择需要的包进行安装连接target设备安装好jetson后要做什么安装新支持的tensorflow使用tensorrt在tx2上加速tensorflow模型的推理请关注我的后续内容 引言 最近nvidia推出了大量实用的硬件和软件,这一次jetpack4.2的出现,标志着jetson开发环境的完善,在这个新的版本中,更新了3样我...

weixin_43842032的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

同时安装tensorflow1.x和tensorflow2.x版本

安装tensorflow2.x 首先下载anaconda,网上教程很多,下载完成后,打开anaconda prompt 1、这里我创建了一个TensorFlow2.0虚拟环境,注意:tensorflow2.x对应的python版本为3.7 conda create tf2 python3.7 2、创建后输入 conda env list 出现了base和tf2的列表则创建成功 3、进入tf2环境 conda activate tf2 左侧由base变为tf2则成功 4、安装tensorflow2.0

twinkle-zp的博客 7294

python3+TensorFlow 2.x 基础学习(一)

虽然 Keras 提供了便捷的接口,但有时我们需要更多控制,特别是需要自定义训练循环时。在 TensorFlow 2.x 中,你可以轻松实现自定义的训练循环。# 自定义训练循环for epoch in range(5): # 训练5轮# 计算梯度并更新模型参数TensorFlow 2.x 是一个功能强大且灵活的深度学习框架,它集成了许多先进的功能,如 Keras、高效的数据处理 API(tf.data)、Eager Execution 和自动化的模型优化工具。

dingyahui的博客 2643

GPU 版本Tensorflow 2.X 简易详细安装教程

Cuda版本-cuDNN版本-python版本-tensorflow版本 相互版本匹配安装完才能正常工作 eras→numpy→scipy seaborn→matplotlib→pandas→scikit-learn版本匹配问题 CUDA与cuDNN的安装步骤

weixin_45908554的博客 3047

【TensorFlow2.x 实践】服装分类

前言 基于TensorFlow2.x的框架,使用PYthon编程语言,实现对服装图像进行分类。 Fashion MNIST数据集包括一些运动鞋和衬衫等衣物,不同类别的运动鞋和衬衫等衣物,进行索引分类。 思路流程: 导入 Fashion MNIST数据 集探索数据 预处理数据 建立模型(搭建神经网络结构、编译模型) 训练模型(把数据输入模型、评估准确性、作出预测、验证预测) 使用训练有素的模型

黎国溥 5349

Python基于TensorFlow实现Transformer回归模型(Transformer回归算法)项目实战

Python基于TensorFlow实现Transformer回归模型(Transformer回归算法)项目实战

张陈亚的博客 1668
上一篇: python3+TensorFlow 2.x 基础学习(一)
下一篇: python3+TensorFlow 2.x(三)手写数字识别
刀客123
博客等级 码龄11年 800粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值