Questions tagged «deep-learning»

深度学习是机器学习的一个领域,其目标是使用“深度”(由许多层组成)的特殊神经网络体系结构来学习复杂功能。该标签应用于有关深度学习架构实施的问题。一般的机器学习问题应标记为“机器学习”。包括相关软件库的标签(例如“ keras”,“ tensorflow”,“ pytorch”,“ fast.ai”等)会很有帮助。


3
了解Keras LSTM
我试图调和对LSTM的理解,并在克里斯托弗·奥拉(Christopher Olah)在Keras中实现的这篇文章中指出了这一点。我正在关注Jason Brownlee为Keras教程撰写的博客。我主要感到困惑的是 将数据系列重塑为 [samples, time steps, features]和, 有状态的LSTM 让我们参考下面粘贴的代码专注于以上两个问题: # reshape into X=t and Y=t+1 look_back = 3 trainX, trainY = create_dataset(train, look_back) testX, testY = create_dataset(test, look_back) # reshape input to be [samples, time steps, features] trainX = numpy.reshape(trainX, (trainX.shape[0], look_back, 1)) testX = numpy.reshape(testX, (testX.shape[0], look_back, 1)) …


2
Keras输入说明:input_shape,units,batch_size,dim等
对于任何Keras层(Layer类),有人可以解释如何理解之间的区别input_shape,units,dim,等? 例如,文档说units指定图层的输出形状。 在神经网络的图像下面hidden layer1有4个单位。这是否直接转换为对象的units属性Layer?还是units在Keras中等于隐藏层中每个权重的形状乘以单位数? 简而言之,如何利用下面的图像来理解/可视化模型的属性,尤其是图层的属性?



5
在PyTorch中保存经过训练的模型的最佳方法?
我一直在寻找其他方法来在PyTorch中保存经过训练的模型。到目前为止,我发现了两种选择。 使用torch.save()保存模型,使用torch.load()加载模型。 model.state_dict()保存训练的模型,model.load_state_dict()加载保存的模型。 我碰到过这种讨论,其中建议方法2优于方法1。 我的问题是,为什么选择第二种方法呢?仅仅是因为torch.nn模块具有这两个功能,我们被鼓励使用它们吗?

11
为什么binary_crossentropy和categorical_crossentropy对同一问题给出不同的性能?
我正在尝试训练CNN以按主题对文本进行分类。当我使用二进制交叉熵时,我的精度约为80%,而使用分类交叉熵时,我的精度约为50%。 我不明白为什么会这样。这是一个多类问题,这是否意味着我必须使用分类交叉熵,而具有二进制交叉熵的结果却毫无意义? model.add(embedding_layer) model.add(Dropout(0.25)) # convolution layers model.add(Conv1D(nb_filter=32, filter_length=4, border_mode='valid', activation='relu')) model.add(MaxPooling1D(pool_length=2)) # dense layers model.add(Flatten()) model.add(Dense(256)) model.add(Dropout(0.25)) model.add(Activation('relu')) # output layer model.add(Dense(len(class_id_index))) model.add(Activation('softmax')) 然后我将其categorical_crossentropy作为损失函数像这样编译它: model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 要么 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 从直觉上讲,为什么我要使用分类交叉熵是合理的,我不明白为什么使用二进制得到好的结果,而使用分类不好的原因。


10
Keras,如何获得每一层的输出?
我已经使用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, …




2
Keras中的多对一和多对多LSTM示例
我尝试了解LSTM以及如何使用Keras构建它们。我发现,主要有4种模式可以运行RNN(图中的4种正确模式) 图片来源:Andrej Karpathy 现在,我想知道在Keras中,每个代码的简约代码段看起来如何。所以像 model = Sequential() model.add(LSTM(128, input_shape=(timesteps, data_dim))) model.add(Dense(1)) 对于这4个任务中的每一个,也许需要一点解释。

5
“ Flatten”在Keras中的作用是什么?
我试图了解该Flatten功能在Keras中的作用。下面是我的代码,它是一个简单的两层网络。它接收形状为(3,2)的二维数据,并输出形状为(1,4)的一维数据: model = Sequential() model.add(Dense(16, input_shape=(3, 2))) model.add(Activation('relu')) model.add(Flatten()) model.add(Dense(4)) model.compile(loss='mean_squared_error', optimizer='SGD') x = np.array([[[1, 2], [3, 4], [5, 6]]]) y = model.predict(x) print y.shape 打印出y形状为(1、4)的图形。但是,如果我删除该Flatten行,则会打印出y形状为(1、3、4)的行。 我不明白 根据我对神经网络的理解,该model.add(Dense(16, input_shape=(3, 2)))函数正在创建一个具有16个节点的隐藏的全连接层。这些节点中的每个都连接到3x2输入元素中的每个。因此,该第一层输出处的16个节点已经“平坦”。因此,第一层的输出形状应为(1、16)。然后,第二层将此作为输入,并输出形状为(1、4)的数据。 因此,如果第一层的输出已经“平坦”并且形状为(1,16),为什么还要进一步使其平坦?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.