小编Nic*_*ais的帖子

如何在 Pytorch 中实现 dropout,以及在哪里应用它

我很不确定这是否正确。我真的很难找到很多关于如何参数化神经网络的好例子。

你如何看待这两个班级的辍学方式。首先,我正在编写原始类:

class NeuralNet(nn.Module):
  def __init__(self, input_size, hidden_size, num_classes, p = dropout):
      super(NeuralNet, self).__init__()
      self.fc1 = nn.Linear(input_size, hidden_size)
      self.fc2 = nn.Linear(hidden_size, hidden_size)
      self.fc3 = nn.Linear(hidden_size, num_classes)

  def forward(self, x):
      out = F.relu(self.fc1(x))
      out = F.relu(self.fc2(out))
      out = self.fc3(out)
      return out
Run Code Online (Sandbox Code Playgroud)

然后在这里,我发现了两种不同的写东西的方式,我不知道如何区分。第一个使用:

self.drop_layer = nn.Dropout(p=p) 
Run Code Online (Sandbox Code Playgroud)

而第二个:

self.dropout = nn.Dropout(p) 
Run Code Online (Sandbox Code Playgroud)

这是我的结果:

class NeuralNet(nn.Module):
  def __init__(self, input_size, hidden_size, num_classes, p = dropout):
      super(NeuralNet, self).__init__()
      self.fc1 = nn.Linear(input_size, hidden_size)
      self.fc2 = nn.Linear(hidden_size, hidden_size)
      self.fc3 = nn.Linear(hidden_size, num_classes)
      self.drop_layer = nn.Dropout(p=p)

  def forward(self, x):
      out …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network deep-learning pytorch

13
推荐指数
1
解决办法
9639
查看次数

从 Tensorflow PrefetchDataset 中提取目标

我仍在学习 tensorflow 和 keras,我怀疑这个问题有一个非常简单的答案,我只是因为不熟悉而错过了。

我有一个PrefetchDataset对象:

> print(tf_test)
$ <PrefetchDataset shapes: ((None, 99), (None,)), types: (tf.float32, tf.int64)>
Run Code Online (Sandbox Code Playgroud)

...由特征和目标组成。我可以使用for循环遍历它:

> for example in tf_test:
>     print(example[0].numpy())
>     print(example[1].numpy())
>     exit()
$ [[-0.31 -0.94 -1.12 ... 0.18 -0.27]
   [-0.22 -0.54 -0.14 ... 0.33 -0.55]
   [-0.60 -0.02 -1.41 ... 0.21 -0.63]
   ...
   [-0.03 -0.91 -0.12 ... 0.77 -0.23]
   [-0.76 -1.48 -0.15 ... 0.38 -0.35]
   [-0.55 -0.08 -0.69 ... 0.44 -0.36]]
  [0 0 1 0 1 0 0 0 1 0 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning prefetch keras tensorflow

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

是否可以将 tqdm 用于不是循环的进程?

我正在编写一个程序,其中的操作需要几秒钟(加载大文件)。幸运的是,它总是需要相同的时间。所以,为了用户的利益,我想做一个进度条。然而,tqdm似乎是为循环设计的。可以说这sleep(10)是一个需要时间的过程。我该如何解决这个问题?

我想为一个不是循环的长过程制作一个进度条。

from time import time, sleep
from tqdm import tqdm

for i in tqdm([1]):
    sleep(10)
Run Code Online (Sandbox Code Playgroud)

这段代码的问题是进度条将保持为零,然后在进程结束时跳到 100%。我想要一个在 10 秒内持续变化的进度条。

python tqdm

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

在 Tensorflow 2.0 的自定义训练循环中应用回调

我正在使用 Tensorflow DCGAN 实施指南中提供的代码编写自定义训练循环。我想在训练循环中添加回调。在 Keras 中,我知道我们将它们作为参数传递给 'fit' 方法,但找不到有关如何在自定义训练循环中使用这些回调的资源。我正在从 Tensorflow 文档中添加自定义训练循环的代码:

# Notice the use of `tf.function`
# This annotation causes the function to be "compiled".
@tf.function
def train_step(images):
    noise = tf.random.normal([BATCH_SIZE, noise_dim])

    with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape:
      generated_images = generator(noise, training=True)

      real_output = discriminator(images, training=True)
      fake_output = discriminator(generated_images, training=True)

      gen_loss = generator_loss(fake_output)
      disc_loss = discriminator_loss(real_output, fake_output)

    gradients_of_generator = gen_tape.gradient(gen_loss, generator.trainable_variables)
    gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables)

    generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables))
    discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables))

def train(dataset, epochs):
  for epoch in range(epochs):
    start = time.time() …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow tensorflow2.0 gradienttape

11
推荐指数
3
解决办法
3621
查看次数

FutureWarning:要堆栈的数组必须作为“序列”类型(例如列表或元组)传递。不推荐对非序列迭代的支持

我正在尝试将 Tensorflow 数据集转换为 NumPy 数组,但收到弃用警告:

FutureWarning:要堆栈的数组必须作为“序列”类型(例如列表或元组)传递。从 NumPy 1.16 开始,对非序列迭代(例如生成器)的支持已被弃用,并且将来会引发错误。

这样做的“新”方式是什么?

可重现的示例与numpy 1.18.1tensorflow 2.1.0

import tensorflow as tf
import numpy as np

ds = tf.data.Dataset.enumerate(tf.data.Dataset.range(20, 40))

np.vstack(ds)
Run Code Online (Sandbox Code Playgroud)

我尝试过的:我一次只能对一个维度进行操作。

np.fromiter(ds.map(lambda x, y: x), float)
Run Code Online (Sandbox Code Playgroud)

python numpy tensorflow

10
推荐指数
1
解决办法
8626
查看次数

如何绘制 Keras/Tensorflow 子类化 API 模型?

我使用 Keras Subclassing API 创建了一个可以正确运行的模型。也model.summary()可以正常工作。当尝试使用tf.keras.utils.plot_model()可视化模型的架构时,它只会输出以下图像:

在此输入图像描述

这几乎感觉像是 Keras 开发团队的一个笑话。这是完整的架构:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
from sklearn.datasets import load_diabetes
import tensorflow as tf
tf.keras.backend.set_floatx('float64')
from tensorflow.keras.layers import Dense, GaussianDropout, GRU, Concatenate, Reshape
from tensorflow.keras.models import Model

X, y = load_diabetes(return_X_y=True)

data = tf.data.Dataset.from_tensor_slices((X, y)).\
    shuffle(len(X)).\
    map(lambda x, y: (tf.divide(x, tf.reduce_max(x)), y))

training = data.take(400).batch(8)
testing = data.skip(400).map(lambda x, y: (tf.expand_dims(x, 0), y))

class NeuralNetwork(Model):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.dense1 = Dense(16, input_shape=(10,), activation='relu', name='Dense1')
        self.dense2 = Dense(32, activation='relu', …
Run Code Online (Sandbox Code Playgroud)

python plot deep-learning keras tensorflow

9
推荐指数
1
解决办法
2308
查看次数

警告:目标位置“...”已存在目录,但它不是 conda 环境。继续创建环境 (y/[n])?

我用这一行删除了 Conda 环境

conda env remove -n myenv
Run Code Online (Sandbox Code Playgroud)

并试图通过创建一个新的来替换它

conda create -n myenv
Run Code Online (Sandbox Code Playgroud)

它收到此警告:

警告:目标位置“...”已存在目录,但它不是 conda 环境。继续创建环境 (y/[n])?

即使环境已删除,第一个命令似乎也不会删除环境的文件夹。

删除环境时,有没有办法删除文件夹,这样就不会弹出此警告?

python anaconda conda

9
推荐指数
1
解决办法
8908
查看次数

有效删除元组列表中的部分重复项

我有一个元组列表,列表的长度可以在 ~8 - 1000 之间变化,具体取决于元组的长度。列表中的每个元组都是唯一的。元组的长度为 N,其中每个条目都是一个通用词。

一个示例元组的长度可以是 N (Word 1, Word 2, Word 3, ..., Word N)

对于列表中的任何元组,所述元组中的元素 j 将是''Word j

一个非常简单的带有字母的例子是

l = [('A', 'B', '', ''), ('A', 'B', 'C', ''), 
     ('', '', '', 'D'), ('A', '', '', 'D'), 
     ('', 'B', '', '')]
Run Code Online (Sandbox Code Playgroud)

每个元组的每个位置要么具有相同的值,要么为空。我想删除所有''在同一位置的另一个元组中具有所有非值的元组。例如,(A,B,'','')包含所有非''值,(A,B,C,'')因此应删除。

filtered_l = [(A,B,C,''),(A,'','',D)]
Run Code Online (Sandbox Code Playgroud)

元组的长度总是相同的(不一定是 4)。元组的长度将在 2-10 之间。

执行此操作的最快方法是什么?

python performance tuples list

9
推荐指数
2
解决办法
543
查看次数

tensorflow 2.0 中是否有 cudnnLSTM 或 cudNNGRU 替代方案

CuDNNGRUTensorFlow 1.0是非常快。但是当我转移到TensorFlow 2.0我无法找到CuDNNGRU. 简单GRUTensorFlow 2.0.

有没有办法使用CuDNNGRUTensorFlow 2.0

python keras tensorflow recurrent-neural-network tensorflow2.0

8
推荐指数
1
解决办法
4801
查看次数

层 lstm_5 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2

我正在尝试创建一个图像字幕模型。你能帮忙解决这个错误吗?input1 是图像向量,input2 是字幕序列。32 是字幕长度。我想将图像向量与序列的嵌入连接起来,然后将其提供给解码器模型。


    def define_model(vocab_size, max_length):
      input1 = Input(shape=(512,))
      input1 = tf.keras.layers.RepeatVector(32)(input1)
      print(input1.shape)

      input2 = Input(shape=(max_length,))
      e1 = Embedding(vocab_size, 512, mask_zero=True)(input2)
      print(e1.shape)

      dec1 = tf.concat([input1,e1], axis=2)
      print(dec1.shape)

      dec2 = LSTM(512)(dec1)
      dec3 = LSTM(256)(dec2)
      dec4 = Dropout(0.2)(dec3)
      dec5 = Dense(256, activation="relu")(dec4)
      output = Dense(vocab_size, activation="softmax")(dec5)
      model = tf.keras.Model(inputs=[input1, input2], outputs=output)
      model.compile(loss="categorical_crossentropy", optimizer="adam")
      print(model.summary())
      return model

Run Code Online (Sandbox Code Playgroud)
ValueError: Input 0 of layer lstm_5 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 512]
Run Code Online (Sandbox Code Playgroud)

python nlp lstm keras tensorflow

8
推荐指数
1
解决办法
1801
查看次数