标签: conv-neural-network

在TensorFlow中存储多个摘要编写器运行的建议做法是什么?

我正在学习使用TensorBoard,每次启动tensorboard时,我都会在终端中收到消息:

WARNING:tensorflow:Found more than one graph event per run. Overwriting the graph with the newest event.
Run Code Online (Sandbox Code Playgroud)

我假设是因为我使用相同的名称多次运行相同的模型.我只想多次运行我的模型,并能够使用tensorflow检查它的作用.刚刚重新开始:

tensorboard --logdir=path/to/log-directory
Run Code Online (Sandbox Code Playgroud)

不是通常的做法吗?或者当我想多次运行相同的模型并探索不同的学习算法,步长,启动等时,做这种工作的建议是什么?是否真的有必要每次都设置一个新的日志目录?

machine-learning neural-network conv-neural-network tensorflow tensorboard

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

交叉熵是 nan

我正在部署我的 conv-deconv 网络。我的问题是交叉熵在训练时总是 nan 所以求解器没有更新权重。我检查了我的代码一整天,但我不知道我哪里出错了。以下是我的架构: 在此处输入图片说明 这是我的交叉熵函数

ys_reshape = tf.reshape(ys,[-1,1])
prediction = tf.reshape(relu4,[-1,1])
cross_entropy = tf.reduce_mean(-(ys_reshape*tf.log(prediction)))
train_step = tf.train.AdamOptimizer(0.01).minimize(cross_entropy)
Run Code Online (Sandbox Code Playgroud)

其中 ys 的维度为 [1,500,500,1],ys_reshape 为 [250000,1],relu4 为 [1,500,500,1],预测为 [250000,1]。标签矩阵ys的值是{0,1},这是一个两类密集预测。

如果我打印 train_step 它将显示无。谁能帮我?

python conv-neural-network tensorflow cross-entropy

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

如何为CNN的每个班级获得0到1的分数?

我目前正在训练一个网络(使用Tensorflow实现的CNN)来分类超过3个类,事情是我最终得分如下:

[ -20145.36, 150069, 578456.3 ].
Run Code Online (Sandbox Code Playgroud)

我希望得分在0到1之间(某种概率).

起初,我想过使用sigmoid函数,但后来我发现这个讨论甚至没有提到:

https://www.quora.com/How-do-you-normalize-numeric-scores-to-a-0-1-range-for-comparing-different-machine-learning-techniques

你建议我做什么,每堂课的得分在0到1之间?

谢谢

classification deep-learning conv-neural-network tensorflow softmax

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

TensorFlow MNIST DCGAN:如何设置损失函数?

我想自己在 TensorFlow 中为 MNIST构建一个DCGAN。但是,我正在努力找出应该如何为生成器设置损失函数。在Keras DCGAN 实现中,作者对这个问题使用了一点“解决方法”:他简单地构建了 3 个模型。生成器 (G)、鉴别器 (D) 和第三个,他只是将 G 与 D 结合起来,同时在那里将 D 的训练能力设置为 false。

这样,他就可以用真实图像+生成的图像馈送 D 来训练 D 并训练 G+D 组合模型,因为 D 的损失会传播到 G,因为 D 在 G+D 组合模型中是不可训练的。

在 TensorFlow 中,我已经构建了 G 和 D。训练 D 相对简单,因为我只需要将一批真实的 MNIST 训练图像与生成的图像结合起来并调用训练操作:

session.run(D_train_op,
            feed_dict={x: batch_x, y: batch_y})
Run Code Online (Sandbox Code Playgroud)

本例中的训练操作是一个二元交叉熵

tf.losses.softmax_cross_entropy(y, D_out)
Run Code Online (Sandbox Code Playgroud)

...但是当我没有“堆叠”模型,将“G 和 D”组合到单个第三个模型时,我将如何为 G 设置损失函数?

我知道我必须用 G 生成一批图像,将它们输入 D 然后我可以获得 D 的损失......但是,G 的输出是 shape (batch_size, 28, 28, 1)。我将如何手动设置 G 的损失函数?

如果没有“G 和 D”组合模型“解决方法”,我必须将 …

neural-network mnist conv-neural-network tensorflow dcgan

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

给定输入大小:(128x1x1).计算输出大小:(128x0x0).输出尺寸太小

我正在努力训练一个看起来像这样的U-Net

`class UNet(nn.Module):
def __init__(self, imsize):
    super(UNet, self).__init__()
    self.imsize = imsize

    self.activation = F.relu
    self.pool1 = nn.MaxPool2d(2)
    self.pool2 = nn.MaxPool2d(2)
    self.pool3 = nn.MaxPool2d(2)
    self.pool4 = nn.MaxPool2d(2)
    self.conv_block1_64 = UNetConvBlock(4, 64)
    self.conv_block64_128 = UNetConvBlock(64, 128)
    self.conv_block128_256 = UNetConvBlock(128, 256)
    self.conv_block256_512 = UNetConvBlock(256, 512)
    self.conv_block512_1024 = UNetConvBlock(512, 1024)

    self.up_block1024_512 = UNetUpBlock(1024, 512)
    self.up_block512_256 = UNetUpBlock(512, 256)
    self.up_block256_128 = UNetUpBlock(256, 128)
    self.up_block128_64 = UNetUpBlock(128, 64)

    self.last = nn.Conv2d(64, 1, 1)`
Run Code Online (Sandbox Code Playgroud)

我正在使用的损失函数是

`class BCELoss2d(nn.Module):

def __init__(self, weight=None, size_average=True):
    super(BCELoss2d, self).__init__()
    self.bce_loss = nn.BCELoss(weight, size_average) …
Run Code Online (Sandbox Code Playgroud)

python neural-network deep-learning conv-neural-network pytorch

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

为什么我必须在CNN中将一个图像重塑为[n,高度,宽度,通道]

我尝试将卷积层应用于形状[256,256,3]的图片 a当我直接使用图像的张量时出错

conv1 = conv2d(input,W_conv1) +b_conv1  #<=== error 
Run Code Online (Sandbox Code Playgroud)

错误信息:

ValueError: Shape must be rank 4 but is rank 3 for 'Conv2D' (op: 'Conv2D') 
with input shapes: [256,256,3], [3,3,3,1].    
Run Code Online (Sandbox Code Playgroud)

但是当我重塑函数时,conv2d正常工作

x_image = tf.reshape(input,[-1,256,256,3])
conv1 = conv2d(x_image,W_conv1) +b_conv1
Run Code Online (Sandbox Code Playgroud)

如果我必须重塑张量,在我的情况下重塑的最佳价值是什么?为什么?

import tensorflow as tf
import numpy as np
from PIL import Image

def img_to_tensor(img) :
    return tf.convert_to_tensor(img, np.float32)

def weight_generater(shape):
    return tf.Variable(tf.truncated_normal(shape,stddev=0.1))

def bias_generater(shape):
    return tf.Variable(tf.constant(.1,shape=shape))

def conv2d(x,W):
    return tf.nn.conv2d(x,W,[1,1,1,1],'SAME')

def pool_max_2x2(x):
    return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,1,1,1],padding='SAME')

#read image
img = Image.open("img.tif")

sess …
Run Code Online (Sandbox Code Playgroud)

python reshape conv-neural-network tensorflow tensor

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

1D卷积层后的最大池化层

我是Tensorflow的新手.我正在尝试在1D卷积层之后添加最大池池:

import tensorflow as tf
import math
sess = tf.InteractiveSession()

length=458
# These will be inputs
## Input pixels, image with one channel (gray)
x = tf.placeholder("float", [None, length])
# Note that -1 is for reshaping
x_im = tf.reshape(x, [-1,length,1])
## Known labels
# None works during variable creation to be
# unspecified size
y_ = tf.placeholder("float", [None,2])

# Conv layer 1
num_filters1 = 2
winx1 = 3
W1 = tf.Variable(tf.truncated_normal(
    [winx1, 1 , num_filters1],
    stddev=1./math.sqrt(winx1)))
b1 = tf.Variable(tf.constant(0.1,
                shape=[num_filters1])) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning conv-neural-network tensorflow max-pooling

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

ValueError:检查目标时出错:预期density_3的形状为(1,),但数组的形状为(5,)

如何解决这个错误?我尝试访问所有论坛以寻找答案来纠正此问题。train_set和test_Set中有5个类。

from keras.models import Sequential

from keras.preprocessing.image import ImageDataGenerator

from keras.layers import Convolution2D, MaxPooling2D, Flatten, Dense
classifier=Sequential()
#1st Convolution Layer
classifier.add(Convolution2D(32, 3, 3, input_shape=(64,64,3),activation="relu"))
#Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))

# Adding a second convolutional layer
classifier.add(Convolution2D(32, 3, 3, activation = 'relu'))

classifier.add(MaxPooling2D(pool_size = (2, 2)))

# Flattening
classifier.add(Flatten())

classifier.add(Dense(output_dim = 128, activation = 'relu'))

classifier.add(Dense(output_dim = 64, activation = 'relu'))

classifier.add(Dense(output_dim = 1, activation = 'softmax'))

classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
print(classifier.summary())

train_datagen = ImageDataGenerator(rescale = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning conv-neural-network keras tensorflow

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

如何在Keras中将回归输出限制在0到1之间

我正在尝试检测图像中单个对象的单个像素位置。我有一个keras CNN回归网络,其图像张量作为输入,而3项向量作为输出。

第一项:是1(如果找到了对象)还是0(没有找到对象)

第二项:是介于0和1之间的数字,指示对象沿x轴的距离

第三项:是介于0和1之间的数字,指示对象沿y轴的距离

我已经在2000个测试图像和500个验证图像上训练了网络,并且val_loss远远小于1,并且val_acc最好在0.94左右。优秀。

但是,当我预测输出时,我发现所有三个输出项的值都不在0和1之间,它们实际上大约在-2和3之间。所有这三个项目应在0到1之间。

我没有在输出层上使用任何非线性激活函数,并且对所有非输出层都使用了relus。即使它是非线性的,我也应该使用softmax吗?第二和第三项预测图像的x和y轴,在我看来,它们是线性量。

这是我的keras网络:

inputs = Input((256, 256, 1))

base_kernels = 64 

 # 256
conv1 = Conv2D(base_kernels, 3, activation='relu', padding='same', kernel_initializer='he_normal')(inputs)
conv1 = BatchNormalization()(conv1)
conv1 = Conv2D(base_kernels, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv1)
conv1 = BatchNormalization()(conv1)
conv1 = Dropout(0.2)(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)

# 128
conv2 = Conv2D(base_kernels * 2, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool1)
conv2 = BatchNormalization()(conv2)
conv2 = Conv2D(base_kernels * 2, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv2)
conv2 = BatchNormalization()(conv2)
conv2 = Dropout(0.2)(conv2)
pool2 = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning conv-neural-network keras tensorflow

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

一维CNN是否需要填充以保留输入长度?

步幅= 1和1滤波器的一维CNN是否不需要填充就可以使输出长度等于输入长度?

我以为是这种情况,但是创建了具有这些规范的Keras模型,说输入形状为(17910,1)时输出形状为(17902,1)。我想知道为什么尺寸减小了,因为步幅是1,是一维卷积。

model = keras.Sequential([
layers.Conv1D(filters=1,kernel_size=9,strides=1,activation=tf.nn.relu,input_shape=X_train[0].shape)
        ])
Run Code Online (Sandbox Code Playgroud)

我希望该模型的输出形状应为(17910,1),但很显然,我在此转换中缺少缩小尺寸的来源。层。

python neural-network conv-neural-network keras tensorflow

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