我正在玩一个ANN,这是Udacity DeepLearning课程的一部分.
我有一个任务,涉及使用L2丢失将一个隐藏的ReLU层引入网络.我想知道如何正确地引入它,以便所有权重都受到惩罚,而不仅仅是输出层的权重.
没有概括的网络代码位于帖子的底部(实际运行培训的代码超出了问题的范围).
引入L2的明显方法是用这样的方法替换损失计算(如果beta为0.01):
loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(out_layer, tf_train_labels) + 0.01*tf.nn.l2_loss(out_weights))
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,它会考虑输出层权重的值.我不确定,我们如何正确地惩罚进入隐藏的ReLU层的权重.是否需要它或引入输出层的惩罚将以某种方式保持隐藏的权重也检查?
#some importing
from __future__ import print_function
import numpy as np
import tensorflow as tf
from six.moves import cPickle as pickle
from six.moves import range
#loading data
pickle_file = '/home/maxkhk/Documents/Udacity/DeepLearningCourse/SourceCode/tensorflow/examples/udacity/notMNIST.pickle'
with open(pickle_file, 'rb') as f:
save = pickle.load(f)
train_dataset = save['train_dataset']
train_labels = save['train_labels']
valid_dataset = save['valid_dataset']
valid_labels = save['valid_labels']
test_dataset = save['test_dataset']
test_labels = save['test_labels']
del save # hint to help gc free up memory
print('Training …Run Code Online (Sandbox Code Playgroud) machine-learning neural-network regularized deep-learning tensorflow
如何在PyTorch中的网络中初始化权重和偏差(例如,使用He或Xavier初始化)?
虽然"googl'ing"并进行了一些研究,但我无法在AMD硬件上找到任何用于科学GPGPU计算和OpenCL的严肃/流行框架/ sdk .我错过了哪些文献和/或软件?
特别是我对深度学习感兴趣.
据我所知,deeplearning.net推荐使用NVIDIA硬件和CUDA框架.此外,我所知道的所有重要的深度学习框架,如Caffe,Theano,Torch,DL4J,......都专注于CUDA而不打算支持OpenCL/AMD.
此外,人们可以找到大量科学论文以及基于CUDA的深度学习任务的相应文献,但基于OpenCL/AMD的解决方案几乎没有.
在2015/16学年,是否有可能出现基于OpenCL/AMD的新解决方案或现有科学框架?
使用OpenCL/AMD进行深度学习的良好开端是什么?有文献吗?教程?杂项来源?
我试图复制如何使用包装为rnn的可变长度序列输入,但我想我首先需要理解为什么我们需要"打包"序列.
我理解为什么我们需要"填充"它们,但为什么要"打包"(通过pack_padded_sequence)必要?
任何高级别的解释将不胜感激!
deep-learning recurrent-neural-network pytorch tensor zero-padding
我是卷积神经网络的新手,只是想知道特征映射以及如何对图像进行卷积以提取特征.我很高兴知道在CNN中应用批量标准化的一些细节.
我读了本文https://arxiv.org/pdf/1502.03167v3.pdf和可以理解的BN算法应用于数据,但最终他们提到,当应用到CNN的轻微修改是必需的:
对于卷积层,我们还希望归一化遵循卷积属性 - 以便在不同位置对同一特征映射的不同元素以相同方式进行归一化.为实现这一目标,我们联合规范了所有地点的小批量激活.在Alg.1,我们令B是该组中跨越小批量的两个元件和空间位置的特征地图的所有值的 - 因此对于小批量大小p×Q的大小为m和特征映射的,我们使用的短跑运动员 - 小型m'= | B |的小批量 = m·pq.我们学习每个特征图的一对参数γ(k)和β(k),而不是每次激活.ALG.类似地修改图2,使得在推理期间,BN变换对给定特征图中的每个激活应用相同的线性变换.
当他们说"以不同位置的相同特征地图的不同元素以相同方式标准化"时,我完全感到困惑 "
我知道哪些特征映射意味着什么,不同的元素是每个特征映射中的权重.但我无法理解什么位置或空间位置意味着什么.
我根本无法理解下面的句子 "在Alg.1中,我们让B成为特征图中所有值的集合,跨越小批量和空间位置的元素"
如果有人冷静地阐述并用更简单的术语解释我,我会很高兴的
machine-learning computer-vision deep-learning conv-neural-network batch-normalization
我是第一次运行LSTM模型.这是我的模型:
opt = Adam(0.002)
inp = Input(...)
print(inp)
x = Embedding(....)(inp)
x = LSTM(...)(x)
x = BatchNormalization()(x)
pred = Dense(5,activation='softmax')(x)
model = Model(inp,pred)
model.compile(....)
idx = np.random.permutation(X_train.shape[0])
model.fit(X_train[idx], y_train[idx], nb_epoch=1, batch_size=128, verbose=1)
Run Code Online (Sandbox Code Playgroud)
在训练模型时,使用详细信息有什么用?
如果神经网络卷积层的输入是大小为 128X128X3 的图像并对其应用 40 个大小为 5X5 的滤波器,则输出大小是多少?
假设您需要创建一个仅使用预定义的tensorflow构建块无法实现的激活功能,您可以做什么?
所以在Tensorflow中可以创建自己的激活功能.但它很复杂,你必须用C++编写它并重新编译整个tensorflow [1] [2].
有更简单的方法吗?
python neural-network deep-learning tensorflow activation-function
我在github上看到了这个LSTM语言模型的例子(链接).它一般来说对我来说非常清楚.但是我仍然在努力理解调用的内容contiguous(),这在代码中会多次发生.
例如,在代码输入的第74/75行中,创建LSTM的目标序列.数据(存储在其中ids)是二维的,其中第一维是批量大小.
for i in range(0, ids.size(1) - seq_length, seq_length):
# Get batch inputs and targets
inputs = Variable(ids[:, i:i+seq_length])
targets = Variable(ids[:, (i+1):(i+1)+seq_length].contiguous())
Run Code Online (Sandbox Code Playgroud)
举个简单的例子,当使用批量大小为1和seq_length10时inputs,targets看起来像这样:
inputs Variable containing:
0 1 2 3 4 5 6 7 8 9
[torch.LongTensor of size 1x10]
targets Variable containing:
1 2 3 4 5 6 7 8 9 10
[torch.LongTensor of size 1x10]
Run Code Online (Sandbox Code Playgroud)
所以一般来说我的问题是,contiguous()我需要什么以及为什么需要它?
此外,我不明白为什么该方法被调用目标序列而不是输入序列,因为两个变量都包含相同的数据.
怎么可能targets是inputs不连续的,仍然是连续的? …
我试图了解TimeDistributed wrapper在Keras中的作用.
我得到TimeDistributed"将一个图层应用于输入的每个时间片."
但我做了一些实验并得到了我无法理解的结果.
简而言之,与LSTM层相关,TimeDistributed和Dense层具有相同的结果.
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)
Run Code Online (Sandbox Code Playgroud)
对于这两种型号,我的输出形状为(无,10,1).
任何人都可以解释RNN层之后TimeDistributed和Dense层之间的区别吗?
deep-learning ×10
python ×5
pytorch ×3
keras ×2
tensorflow ×2
contiguous ×1
gpgpu ×1
lstm ×1
opencl ×1
regularized ×1
sdk ×1
tensor ×1
verbose ×1
zero-padding ×1