我正在尝试自定义加载一些带有一些标签的图像文件(JPG 文件),然后按照此处的示例将它们输入 PyTorch 中的卷积神经网络 (CNN) 。但是,似乎仍然没有像样的端到端教程。我看到的问题如下。
RuntimeError: thnn_conv2d_forward is not implemented for type
torch.ByteTensor
Run Code Online (Sandbox Code Playgroud)
我的Dataset看起来像下面这样。
class ImageData(Dataset):
def __init__(self, width=256, height=256, transform=None):
self.width = width
self.height = height
self.transform = transform
y, x = get_images() #y is a list of labels, x is a list of file paths
self.y = y
self.x = x
def __getitem__(self, index):
img = Image.open(self.x[index]) # use pillow to open a file
img = img.resize((self.width, self.height)) # resize the …Run Code Online (Sandbox Code Playgroud) python image-processing pillow pytorch convolutional-neural-network
如何在卷积神经网络中使用 Keras 实现 Monte Carlo dropout 以估计 YARIN GAL 建议的预测不确定性?我正在使用 R。R代码在这里
我正在小批量拟合模型,并希望使用 Monte Carlo dropout 小批量评估模型。在 Keras 文档中找不到任何提示。顺便说一句,我用标志训练 = TRUE 训练了我的模型。
谢谢
我正在尝试实现一个连体网络(通过使用三元组损失方法)。我就是不能让它训练。经过多次尝试,我想我的问题出现在生成器中(我准备输入数据流用于训练),但到目前为止我无法定位问题。帮助!:)
这是我的模型定义(它基于 ResNet50)。
model = ResNet50(weights='imagenet')
model.layers.pop()
for layer in model.layers:
layer.trainable = False
x = model.get_layer('flatten_1').output
model_out = Dense(128, activation='sigmoid', name='model_out')(x)
new_model = Model(inputs=model.input, outputs=model_out)
Run Code Online (Sandbox Code Playgroud)
这里我定义了要训练的模型:
anchor_in = Input(shape=(224, 224, 3))
positive_in = Input(shape=(224, 224, 3))
negative_in = Input(shape=(224, 224, 3))
anchor_out = new_model(anchor_in)
positive_out = new_model(positive_in)
negative_out = new_model(negative_in)
merged_vector = concatenate([anchor_out, positive_out, negative_out], axis=-1)
# Define the model to be trained
siamese_model = Model(inputs=[anchor_in, positive_in, negative_in],
outputs=merged_vector)
siamese_model.compile(optimizer=Adam(lr=.001), loss=triplet_loss)
Run Code Online (Sandbox Code Playgroud)
能够训练模型。我需要使用生成器为它提供数据,这是我定义它的方式:
(请注意,我特意在每个文件夹中只放了 1 张图片只是为了开始。如果可以的话,我稍后会增加每个文件夹中的 # 个图片。)
def generator_three_imgs(): …Run Code Online (Sandbox Code Playgroud) machine-learning keras tensorflow convolutional-neural-network
我想用 PyTorch 卷积做两件事,文档或代码中没有提到:
我想用这样的固定内核创建卷积:
000010000
000010000
100010001
000010000
000010000
Run Code Online (Sandbox Code Playgroud)
我猜,水平方面就像膨胀,但垂直部分是不同的。我看到 dilation 可以作为代码中的参数使用,但它必须是标量或单元素元组(不是每个维度一个元素),所以我认为它不能在这里做我想做的事。
我希望我的卷积像环形一样“环绕”,而不是使用填充。
这似乎是一个微不足道的问题,但我一直无法找到答案。
我已经批量处理了一系列形状的图像:
[batch_size, number_of_frames, frame_height, frame_width, number_of_channels]
我想通过几个卷积层和池化层来传递每一帧。然而,TensorFlow 的conv2d层接受形状的 4D 输入:
[batch_size, frame_height, frame_width, number_of_channels]
我的第一次尝试是使用tf.map_fnoveraxis=1,但我发现这个函数不会传播梯度。
我的第二次尝试是tf.unstack在第一个维度上使用,然后使用tf.while_loop. 但是, mybatch_size和number_of_frames是动态确定的(即两者都是None),如果未指定则tf.unstack引发。我尝试指定,但这会引发{ValueError} Cannot infer num from shape (?, ?, 30, 30, 3)numnum=tf.shape(self.observations)[1]{TypeError} Expected int for argument 'num' not <tf.Tensor 'A2C/infer/strided_slice:0' shape=() dtype=int32>.
tensorflow recurrent-neural-network convolutional-neural-network
我正在尝试构建一个图像分类器,但我遇到了本文标题中提到的错误。下面是我正在处理的代码。我如何将形状为 (8020,) 的 numpy 数组转换为函数 fit() 所需的形状?我试图打印输入形状:train_img_array.shape[1:] 但它给出了一个空形状:()
import numpy as np
img_train.shape
img_valid.shape
img_train.head(5)
img_valid.head(5)
(8020, 4)
(2006, 4)
ID index class data
8030 11596 11596 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
2152 11149 11149 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
550 10015 10015 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
1740 9035 9035 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
9549 8218 8218 1 …Run Code Online (Sandbox Code Playgroud) 我已经使用 tf.layers.conv2d 层构建了一个自动编码器,并希望分阶段训练它。即先训练外层,然后训练中层,然后训练内层。我知道这可以使用 tf.nn.conv2d,因为权重是使用 tf.get_variable 声明的,但我认为这也应该可以使用 tf.layers.conv2d。
如果我输入一个不同于原始图的新变量范围来更改卷积层的输入(即在阶段 1 期间跳过内层),我将无法重用权重。如果我不输入新的变量范围,我将无法冻结我不想在此阶段训练的权重。
基本上我想在这里使用 Aurélien Géron 的训练方法https://github.com/ageron/handson-ml/blob/master/15_autoencoders.ipynb
除了我想使用 cnn 而不是密集层。怎么做?
并且 TensorFlow 消耗的内存超过可用内存(显然导致程序崩溃)。
我的问题是:为什么 TensorFlow 需要这么多内存来运行我的网络?我不明白是什么占用了这么多空间(也许缓存数据几次以优化卷积计算?保存所有隐藏输出用于反向传播?)。有没有办法防止 TensorFlow 消耗这么多内存?
旁注:
如何计算CNN网络中的参数总数
这是代码:
input_shape = (32, 32, 1)
flat_input_size = input_shape[0]*input_shape[1]*input_shape[2]
num_classes = 4
cnn_model = Sequential()
cnn_model.add(Conv2D(32, (3, 3), padding='same',
input_shape=input_shape))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Conv2D(64, (3, 3)))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Dropout(0.25))
cnn_model.add(Conv2D(128, (3, 3), padding='same'))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Dropout(0.25))
cnn_model.add(Flatten())
cnn_model.add(Dense(512))
cnn_model.add(Activation('relu'))
cnn_model.add(Dropout(0.5))
cnn_model.add(Dense(num_classes))
cnn_model.add(Activation('softmax'))
Run Code Online (Sandbox Code Playgroud)
如何获得 320, 18496, 73856, 590336, 2052,谁能解释一下?
machine-learning neural-network deep-learning convolutional-neural-network
我[-1,256,256,3]使用如下所示的转置图层作为输出形状。我打印输出形状。我的问题特别是关于高度和宽度这两者的问题256。通道似乎是我代码中最后一个转置层的滤波器数量。
我相当简单地假设公式是这样的。我读了其他主题。
H = (H1 - 1)*stride + HF - 2*padding
Run Code Online (Sandbox Code Playgroud)
但是当我计算时,我似乎没有得到该输出。我想我可能会缺少填充计算,那么添加了多少填充'SAME'?
我的代码是这个。
H = (H1 - 1)*stride + HF - 2*padding
Run Code Online (Sandbox Code Playgroud) 我使用运行CNN训练MNIST图像的以下代码(此处礼貌):
from __future__ import print_function
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
batch_size = 128
num_classes = 10
epochs = 1
# input image dimensions
img_rows, img_cols = 28, 28
# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
if K.image_data_format() == 'channels_first':
x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
x_test = x_test.reshape(x_test.shape[0], …Run Code Online (Sandbox Code Playgroud) python machine-learning keras tensorflow convolutional-neural-network
convolutional-neural-network ×11
tensorflow ×6
python ×5
keras ×4
pytorch ×2
convolution ×1
dropout ×1
memory ×1
montecarlo ×1
numpy ×1
padding ×1
pillow ×1
r ×1
share ×1