我已经使用CNN训练了二进制分类模型,这是我的代码
model = Sequential()
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1],
border_mode='valid',
input_shape=input_shape))
model.add(Activation('relu'))
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
# (16, 16, 32)
model.add(Convolution2D(nb_filters*2, kernel_size[0], kernel_size[1]))
model.add(Activation('relu'))
model.add(Convolution2D(nb_filters*2, kernel_size[0], kernel_size[1]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
# (8, 8, 64) = (2048)
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(2)) # define a binary classification problem
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='adadelta',
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=batch_size,
nb_epoch=nb_epoch,
verbose=1,
validation_data=(x_test, y_test))
Run Code Online (Sandbox Code Playgroud)
在这里,我想像TensorFlow一样获得每一层的输出,我该怎么做?
任何人都可以通过实例清楚地解释CNN(深度学习)中的1D,2D和3D卷积之间的区别吗?
signal-processing machine-learning convolution deep-learning conv-neural-network
如果我们有10个特征向量,那么我们可以在输入层有10个神经节点.如果我们有5个输出类,那么我们可以在输出层有5个节点.但是选择MLP中隐藏层数的标准是什么以及有多少神经节点1个隐藏层中的节点?
我正在使用此代码,并且model.eval()在某些情况下看到了。
我知道它应该允许我“评估我的模型”,但我不明白什么时候应该和不应该使用它,或者如果关闭如何关闭。
我想运行上面的代码来训练网络,并且还能够在每个时期运行验证。我还是做不到。
我在使用TensorFlow实现的许多可用神经网络代码中发现,正则化术语通常通过手动向损失值添加附加项来实现.
我的问题是:
有没有比手动更优雅或推荐的正规化方法?
我也发现get_variable有一个论点regularizer.该如何使用?根据我的观察,如果我们将正则化器传递给它(例如tf.contrib.layers.l2_regularizer,表示正则化术语的张量将被计算并添加到名为的图形集合中tf.GraphKeys.REGULARIZATOIN_LOSSES.TensorFlow是否会自动使用该集合(例如,在训练时由优化器使用)?或者是否应该自己使用该系列?
考虑示例代码.
我想知道如何在可能爆炸梯度的RNN上对此网络应用渐变剪辑.
tf.clip_by_value(t, clip_value_min, clip_value_max, name=None)
Run Code Online (Sandbox Code Playgroud)
这是一个可以使用的示例,但我在哪里介绍这个?在defN的RNN
lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0)
# Split data because rnn cell needs a list of inputs for the RNN inner loop
_X = tf.split(0, n_steps, _X) # n_steps
tf.clip_by_value(_X, -1, 1, name=None)
Run Code Online (Sandbox Code Playgroud)
但是这没有意义,因为张量_X是输入而不是渐变的被剪裁的东西?
我是否必须为此定义自己的优化器,还是有更简单的选项?
我最近回顾了一个卷积文本分类的有趣实现.但是,我所评论的所有TensorFlow代码都使用随机(未预先训练)的嵌入向量,如下所示:
with tf.device('/cpu:0'), tf.name_scope("embedding"):
W = tf.Variable(
tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),
name="W")
self.embedded_chars = tf.nn.embedding_lookup(W, self.input_x)
self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何使用Word2vec的结果或GloVe预训练的单词嵌入而不是随机的?
我尝试了解LSTM以及如何使用Keras构建它们.我发现,主要有4种运行RNN的模式(图中右边4种)
图片来源:Andrej Karpathy
现在我想知道他们每个人的简约代码片段在Keras中会是什么样子.所以像
model = Sequential()
model.add(LSTM(128, input_shape=(timesteps, data_dim)))
model.add(Dense(1))
Run Code Online (Sandbox Code Playgroud)
对于4个任务中的每个任务,可能只需要一点点解释.
machine-learning neural-network deep-learning keras recurrent-neural-network
这是来自TensorFlow网站的教程代码,
有谁能帮忙解释一下是什么global_step意思?
我在Tensorflow网站上发现,使用全局步骤计算训练步骤,但我并不完全明白这意味着什么.
此外,数字0在设置时意味着什么global_step?
def training(loss,learning_rate):
tf.summary.scalar('loss',loss)
optimizer = tf.train.GradientDescentOptimizer(learning_rate)
# Why 0 as the first parameter of the global_step tf.Variable?
global_step = tf.Variable(0, name='global_step',trainable=False)
train_op = optimizer.minimize(loss, global_step=global_step)
return train_op
Run Code Online (Sandbox Code Playgroud)
根据Tensorflow doc global_step:在变量更新后增加1.这意味着一次更新后global_step变为1吗?
我正在尝试训练我的模型对图像进行分类.我遇到的问题是,它们有不同的尺寸.是否有可能在没有调整大小的情况下训练这些图像.
deep-learning ×10
python ×5
tensorflow ×5
keras ×2
convolution ×1
lstm ×1
numpy ×1
perceptron ×1
pytorch ×1