小编Nic*_*ais的帖子

在 Pytorch 卷积神经网络中展平张量(大小不匹配错误)

我用随机像素做了一个可重复的例子。我试图在卷积层之后展平密集层的张量。问题出在卷积层和密集层的交叉处。我不知道如何放置正确数量的神经元。

tl;dr我正在寻找等效的手册keras.layers.Flatten()因为它不存在于pytorch.

import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torch.utils.data import DataLoader

x = np.random.rand(1_00, 3, 100, 100)
y = np.random.randint(0, 2, 1_00)

if torch.cuda.is_available():
    x = torch.from_numpy(x.astype('float32')).cuda()
    y = torch.from_numpy(y.astype('float32')).cuda()

class ConvNet(nn.Module):

    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 32, 3)
        self.conv2 = nn.Conv2d(32, 64, 3)
        self.conv3 = nn.Conv2d(64, 128, 3)

        self.fc1 = nn.Linear(128, 1024) # 128 …
Run Code Online (Sandbox Code Playgroud)

python conv-neural-network pytorch tensor

6
推荐指数
1
解决办法
2978
查看次数

如何使用accuracy_score(或其他建议的函数)测量xgboost回归器的准确性

我正在编写代码来解决一个简单的问题,即预测库存中物品丢失的概率。

我正在使用XGBoost预测模型来做到这一点。

我将数据分成两个 .csv 文件,一个是训练数据,另一个是测试数据

这是代码:

    import pandas as pd
    import numpy as np


    train = pd.read_csv('C:/Users/pedro/Documents/Pedro/UFMG/8o periodo/Python/Trabalho Final/train.csv', index_col='sku').fillna(-1)
    test = pd.read_csv('C:/Users/pedro/Documents/Pedro/UFMG/8o periodo/Python/Trabalho Final/test.csv', index_col='sku').fillna(-1)


    X_train, y_train = train.drop('isBackorder', axis=1), train['isBackorder']

    import xgboost as xgb
    xg_reg = xgb.XGBRegressor(objective ='reg:linear', colsample_bytree = 0.3, learning_rate = 0.1,
                    max_depth = 10, alpha = 10, n_estimators = 10)
    xg_reg.fit(X_train,y_train)


    y_pred = xg_reg.predict(test)

    # Create file for the competition submission
    test['isBackorder'] = y_pred
    pred = test['isBackorder'].reset_index()
    pred.to_csv('competitionsubmission.csv',index=False)
Run Code Online (Sandbox Code Playgroud)

这是我尝试测量问题准确性的函数(使用 RMSE …

python training-data scikit-learn xgboost k-fold

6
推荐指数
1
解决办法
7358
查看次数

多条件提前停止

我正在为推荐系统(项目推荐)进行多类分类,我目前正在使用sparse_categorical_crossentropy损失训练我的网络。因此,EarlyStopping通过监控我的验证损失来执行是合理的,val_loss例如:

tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
Run Code Online (Sandbox Code Playgroud)

它按预期工作。然而,网络(推荐系统)的性能是由 Average-Precision-at-10 来衡量的,并在训练期间作为一个指标进行跟踪,如average_precision_at_k10. 因此,我还可以使用此指标执行提前停止:

tf.keras.callbacks.EarlyStopping(monitor='average_precision_at_k10', patience=10)
Run Code Online (Sandbox Code Playgroud)

这也按预期工作。

我的问题: 有时验证损失会增加,而 10 的平均精度正在提高,反之亦然。因此,当且仅当两者都在恶化时,我需要监控两者并提前停止。我想做什么:

tf.keras.callbacks.EarlyStopping(monitor=['val_loss', 'average_precision_at_k10'], patience=10)
Run Code Online (Sandbox Code Playgroud)

这显然不起作用。任何想法如何做到这一点?

python recommendation-engine python-3.x keras tensorflow

6
推荐指数
1
解决办法
1455
查看次数

张量流 - 如何使用 16 位精度浮点数

问题

float16可以在 numpy 中使用,但不能在 Tensorflow 2.4.1 中使用,从而导致错误。

float16 是否仅在具有 16 位支持的 GPU 的实例上运行时才可用?

混合精度

如今,大多数模型都使用 float32 数据类型,它占用 32 位内存。但是,有两种较低精度的数据类型:float16 和 bfloat16,每种数据类型都占用 16 位内存。现代加速器可以在 16 位数据类型中更快地运行操作,因为它们具有专门的硬件来运行 16 位计算,并且可以更快地从内存中读取 16 位数据类型。

NVIDIA GPU 在 float16 中运行操作的速度比在 float32 中快,TPU 在 bfloat16 中运行操作的速度比在 float32 中快。因此,应尽可能在这些设备上使用这些较低精度的数据类型。然而,由于数字原因,变量和一些计算仍应采用 float32 格式,以便模型训练到相同的质量。Keras 混合精度 API 允许您将 float16 或 bfloat16 与 float32 混合使用,以获得 float16/bfloat16 的性能优势以及 float32 的数值稳定性优势。

那么在CPU上测试时,是否需要手动将类型改为float32才能运行呢?根据[TF2.0]全局更改默认类型,目前没有选项可以更改默认浮点精度。

麻木

import numpy as np
np.arange(12, dtype=np.float16).reshape(3,4)
---
array([[ 0.,  1.,  2.,  3.],
       [ 4.,  5.,  6.,  7.],
       [ 8., …
Run Code Online (Sandbox Code Playgroud)

python precision keras tensorflow

6
推荐指数
1
解决办法
6785
查看次数

使用 Pandas 数据读取器提取股票信息

我正在使用 pandas datareader 来提取给定日期范围内的股票信息。例如:

import pandas_datareader.data as web
import datetime as dt

start = dt.datetime(2018,3,26)
end = dt.datetime(2018,3,29)

web.DataReader('IBM','yahoo', start, end).reset_index()
Run Code Online (Sandbox Code Playgroud)

这将为 IBM 返回以下数据帧:

在此处输入图片说明

这包含我正在寻找的信息,但我想自动遍历多个股票代码(而不是手动更改股票代码)。理想情况下,我可以通过所需的股票行情列表循环此代码。

python datareader stock pandas

5
推荐指数
1
解决办法
8523
查看次数

ValueError: 密集层的输入 0 与该层不兼容: : 预期 min_ndim=2,发现 ndim=1。收到完整形状:[无]

我是 Tensorflow 新手,并尝试使用下面的示例代码来处理它:

def build_model():
    model = keras.Sequential([
            layers.Dense(10, activation=tf.nn.relu),
            layers.Dense(10, activation=tf.nn.relu),
            layers.Dense(1)
        ])
    optimizer = tf.keras.optimizers.RMSprop(0.001)

    model.compile(loss='mean_squared_error',
            optimizer=optimizer,
            metrics=['mean_absolute_error', 'mean_squared_error'])
    return model

model = build_model()
model.fit(training_dataset, epochs=5, steps_per_epoch=179)
Run Code Online (Sandbox Code Playgroud)

训练数据集如下,有 179 行:

features:[29225 29259 29210 29220] Label:2
features:[29220 29236 29201 29234] Label:1
features:[29234 29241 29211 29221] Label:2
features:[29221 29224 29185 29185] Label:2
features:[29185 29199 29181 29191] Label:2
features:[29191 29195 29171 29195] Label:1
features:[29195 29228 29189 29225] Label:1
features:[29225 29236 29196 29199] Label:2
features:[29199 29222 29197 29218] Label:1
features:[29218 29235 29207 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras tensorflow

5
推荐指数
1
解决办法
8598
查看次数

GridSearchCV:获取模型的属性

我用来拟合SVM,我想知道所有拟合模型的GridSearchCV支持向量的数量。目前我只能访问此 SVM 的属性以获得最佳模型。

玩具示例:

import numpy as np
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
y = np.array([1, 1, 2, 2])
clf = SVC()
params = {'C': [0.01, 0.1, 1]}
search = GridSearchCV(estimator=clf, cv=2, param_grid=params, return_train_score=True)
search.fit(X, y);
Run Code Online (Sandbox Code Playgroud)

最佳模型的支持向量数量:

search.best_estimator_.n_support_
Run Code Online (Sandbox Code Playgroud)

如何获得n_support_所有型号的?正如我们分别获得每个参数的训练/测试误差一样C

python scikit-learn

5
推荐指数
0
解决办法
818
查看次数

你如何在 Pytorch 中反转布尔值的张量?

使用 NumPy,您可以使用 np.invert(array) 来实现,但 Pytorch 中没有反转功能。假设我有一个布尔值的二维张量:

import torch

ts = torch.rand((10, 4)) < .5
Run Code Online (Sandbox Code Playgroud)
tensor([[ True,  True, False,  True],
        [ True,  True,  True,  True],
        [ True, False,  True,  True],
        [False,  True,  True, False],
        [False,  True,  True,  True],
        [ True,  True,  True,  True],
        [ True, False,  True,  True],
        [False,  True, False,  True],
        [ True,  True, False,  True],
        [False, False,  True, False]])
Run Code Online (Sandbox Code Playgroud)

如何将 False 转换为 True,反之亦然?

python machine-learning python-3.x deep-learning pytorch

5
推荐指数
1
解决办法
5869
查看次数

警告:tensorflow:Layer my_model 正在将输入张量从 dtype float64 转换为 float32 层的 dtype,这是 TensorFlow 2 中的新行为

在我的 Tensorflow 神经网络开始训练之前,会打印出以下警告:

警告:tensorflow:Layer my_model 正在将输入张量从 dtype float64 转换为 float32 层的 dtype,这是 TensorFlow 2 中的新行为。该层具有 dtype float32,因为它的 dtype 默认为 floatx。如果您打算在 float32 中运行此层,则可以安全地忽略此警告。

如果有疑问,如果您将 TensorFlow 1.X 模型移植到 TensorFlow 2,则此警告可能只是一个问题。要将所有层更改为默认情况下具有 dtype float64,请调用tf.keras.backend.set_floatx('float64').

要仅更改此图层,请将 dtype='float64' 传递给图层构造函数。如果您是该层的作者,您可以通过将 autocast=False 传递给基础层构造函数来禁用自动转换。

现在,根据错误消息,我可以通过将后端设置为'float64'. 但是,我想深入了解并dtypes手动设置正确的。

完整代码:

import tensorflow as tf
from tensorflow.keras.layers import Dense, Concatenate
from tensorflow.keras import Model
from sklearn.datasets import load_iris
iris, target = load_iris(return_X_y=True)

X = iris[:, :3]
y = iris[:, 3]

ds = tf.data.Dataset.from_tensor_slices((X, y)).shuffle(25).batch(8)

class …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

5
推荐指数
1
解决办法
4011
查看次数

简单的 Python 问题:为什么我不能将变量分配给排序列表(就地)?

y = [1, 3, 2, 4]
x = y.sort()
print(x)
Run Code Online (Sandbox Code Playgroud)

x 是None。为什么这种语法适用于例如 Javascript 而不是 Python?

python

5
推荐指数
2
解决办法
770
查看次数