小编Nic*_*ais的帖子

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
查看次数

Android Studio 中的“立即同步”按钮在哪里?

我正在关注这个 Tensorflow教程。在底部,它显示单击“立即同步”。那到底是什么?

android android-studio

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

时间序列分析中的 tf.data.dataset 批处理

我正在考虑为时间序列 LSTM 模型创建管道。我有两个输入提要,我们称它们为series1series2

tf.data通过调用来初始化对象from.tensor.slices

ds = tf.data.Dataset.from_tensor_slices((series1, series2))
Run Code Online (Sandbox Code Playgroud)

我将它们进一步批处理到设定窗口大小的窗口中,并在窗口之间移动 1:

ds = ds.window(window_size + 1, shift=1, drop_remainder=True)
Run Code Online (Sandbox Code Playgroud)

此时我想尝试一下它们是如何批处理在一起的。我想生成如下所示的特定输入作为示例:

series1 = [1, 2, 3, 4, 5]
series2 = [100, 200, 300, 400, 500]

batch 1: [1, 2, 100, 200]
batch 2: [2, 3, 200, 300]
batch 3: [3, 4, 300, 400]
Run Code Online (Sandbox Code Playgroud)

因此,每个批次将返回Series1的两个元素,然后返回Series2的两个元素。此代码片段无法单独批处理它们:

ds = ds.map(lambda s1, s2: (s1.batch(window_size + 1), s2.batch(window_size + 1))
Run Code Online (Sandbox Code Playgroud)

因为它返回数据集对象的两个映射。由于它们是对象,因此它们不可订阅,因此这也不起作用:

ds = ds.map(lambda s1, s2: (s1[:2], s2[:2])) …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow tensorflow-datasets tensorflow2.0

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

创建一个 3D 零张量,在 numpy/jax 中的每个切片上随机放置一个“1”

例如,我需要创建一个像这样的 3D 张量 (5,3,2)

array([[[0, 0],
        [0, 1],
        [0, 0]],

       [[1, 0],
        [0, 0],
        [0, 0]],

       [[0, 0],
        [1, 0],
        [0, 0]],

       [[0, 0],
        [0, 0],
        [1, 0]],

       [[0, 0],
        [0, 1],
        [0, 0]]])
Run Code Online (Sandbox Code Playgroud)

每个切片中都应该随机放置一个“1”(如果您将张量视为一条面包)。这可以使用循环来完成,但我想向量化这部分。

python numpy tensor jax

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

如何从Keras的早期停止中看到最好的时代的损失?

我已经成功地在我的 Keras 模型中实现了提前停止,但我不确定如何看待最佳时代的损失。

es = EarlyStopping(monitor='val_out_soft_loss', 
            mode='min',
            restore_best_weights=True, 
            verbose=2, 
            patience=10)

model.fit(tr_x,
          tr_y,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          callbacks=[es],
          validation_data=(val_x, val_y))
loss = model.history.history["val_out_soft_loss"][-1]
return model, loss
Run Code Online (Sandbox Code Playgroud)

我定义损失分数的方式意味着返回的分数来自最后一个时期,而不是最好的时期。

例子:

from sklearn.model_selection import train_test_split, KFold
losses = []
models = []
for k in range(2):
    kfold = KFold(5, random_state = 42 + k, shuffle = True)
    for k_fold, (tr_inds, val_inds) in enumerate(kfold.split(train_y)):
        print("-----------")
        print("-----------")
        model, loss = get_model(64, 100)
        models.append(model)
        print(k_fold, loss)
        losses.append(loss)
print("-------")
print(losses)
print(np.mean(losses))

Epoch 23/100
18536/18536 [==============================] - 7s 362us/step - …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network keras tensorflow

4
推荐指数
1
解决办法
1278
查看次数

AttributeError:模块“tensorflow”没有属性“layers”

我正在尝试实现 VGG,但收到上述奇怪的错误。我在 Ubuntu 上运行 TFv2。这可能是因为我没有运行 CUDA 吗?

代码来自这里

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

# Imports

import time
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
# tf.logging.set_verbosity(tf.logging.INFO)

from tensorflow.keras.layers import Conv2D, Dense, Flatten

np.random.seed(1)

mnist = tf.keras.datasets.mnist

(train_data, train_labels), (eval_data, eval_labels) = mnist.load_data()

train_data, train_labels = train_data / 255.0, train_labels / 255.0

# Add a channels dimension
train_data = train_data[..., tf.newaxis]
train_labels = train_labels[..., tf.newaxis]

index = …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

4
推荐指数
1
解决办法
3万
查看次数

使用 Matplotlib 将 Pytorch 张量显示为图像

我正在尝试显示存储为 pytorch 张量的图像。

trainset = datasets.ImageFolder('data/Cat_Dog_data/train/', transform=transforms)
trainload = torch.utils.data.DataLoader(trainset, batch_size=32, shuffle=True)

images, labels = iter(trainload).next()
image = images[0]
image.shape 

>>> torch.Size([3, 224, 224]) # pyplot doesn't like this, so reshape

image = image.reshape(224,224,3)
plt.imshow(image.numpy())
Run Code Online (Sandbox Code Playgroud)

此方法显示同一图像的 3 x 3 网格,始终以灰度显示。例如:

在此处输入图片说明

如何解决此问题以便正确显示单色图像?

python machine-learning matplotlib pytorch

4
推荐指数
1
解决办法
5555
查看次数

Tensorflow DecodeJPEG:预期图像(JPEG、PNG 或 GIF),格式未知,以“\000\000\000\000\000\000\000\00”开头

我正在循环浏览图像文件夹,这种情况一直在发生。

tensorflow.python.framework.errors_impl.InvalidArgumentError:预期图像(JPEG、PNG 或 GIF),格式未知,以 '\000\000\000\000\000\000\000\000\000\000\000\ 开头000\000\000\000\000' [[{{node DecodeJpeg}}]]

这个文件夹中有一些不是图像的文件,但它们应该被我的上一步过滤掉。任何人都知道发生了什么?

test_files_ds = tf.data.Dataset.list_files(myFolder + '/*.jpg') 

AUTOTUNE = tf.data.experimental.AUTOTUNE


def process_unlabeled_img(file_path):
    img = tf.io.read_file(file_path)
    img = tf.image.decode_jpeg(img, channels=3)
    img = tf.image.convert_image_dtype(img, tf.float32)
    img = tf.image.resize(images=img, size=(224, 224))
    return file_path, img
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow

4
推荐指数
1
解决办法
2089
查看次数