我用随机像素做了一个可重复的例子。我试图在卷积层之后展平密集层的张量。问题出在卷积层和密集层的交叉处。我不知道如何放置正确数量的神经元。
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) 我正在编写代码来解决一个简单的问题,即预测库存中物品丢失的概率。
我正在使用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 …
我正在为推荐系统(项目推荐)进行多类分类,我目前正在使用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)
这显然不起作用。任何想法如何做到这一点?
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) 我正在使用 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 返回以下数据帧:
这包含我正在寻找的信息,但我想自动遍历多个股票代码(而不是手动更改股票代码)。理想情况下,我可以通过所需的股票行情列表循环此代码。
我是 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) 我用来拟合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。
使用 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,反之亦然?
在我的 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) y = [1, 3, 2, 4]
x = y.sort()
print(x)
Run Code Online (Sandbox Code Playgroud)
x 是None。为什么这种语法适用于例如 Javascript 而不是 Python?
python ×10
keras ×4
tensorflow ×4
python-3.x ×2
pytorch ×2
scikit-learn ×2
datareader ×1
k-fold ×1
pandas ×1
precision ×1
stock ×1
tensor ×1
xgboost ×1