- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码片段:
model=keras.Sequential()
model.add(keras.layers.LSTM(28,input_shape=(300,1),return_sequences=True))
model.add(keras.layers.Dropout(0.4))
model.add(keras.layers.LSTM(14))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(2,activation="softmax"))
sgd=keras.optimizers.SGD(lr=0.001)
model.compile(optimizer=sgd,loss=keras.losses.sparse_categorical_crossentropy)
model.fit(trainData,labeledData.sentiment,epochs=20,batch_size=3000)
trainData 的形状是 [batch_size,300,1],当我开始训练这个模型时,损失并没有下降。
时代 1/2025000/25000 [================================] - 2s 89us/步 - 损失:0.6927纪元 2/2025000/25000 [================================] - 0s 8us/步 - 损失:0.6928时代 3/2025000/25000 [================================] - 0s 8us/步 - 损失:0.6928时代 4/2025000/25000 [================================] - 0s 8us/步 - 损失:0.6928纪元 5/2025000/25000 [================================] - 0s 8us/步 - 损失:0.6928时代 6/2025000/25000 [================================] - 0s 8us/step - 损失:0.6926
我错过了什么?
最佳答案
正如评论中所讨论的那样,问题在于大批量,而且 - 也可能 - 用于训练的优化器。
很难确定您的算法未与当前设置收敛的确切原因,但可以这样论证:
与直觉相反,更大批量的训练在某些情况下实际上会减慢您的训练速度。这背后的原因纯粹是推测,取决于数据的确切性质和分布。不过,通常来说,批处理越小意味着更新越频繁。如果您计算出的梯度都指向相似的方向,那么更频繁地更新将导致更快的收敛。
好的做法是批处理大小从不大于 1000。在大多数情况下,128 是一个很好的经验法则,也是较大批处理的速度优势与良好收敛之间的一个很好的权衡较小批量的属性。请注意,这仅在您拥有大量训练数据的情况下才有意义。
另请注意,从理论上讲,该大设置中多个示例的梯度可以“平均”,这意味着大批量将只有非常小且模糊的梯度。在小批量中使用较少的样本会减少这种机会,尽管它会增加“走错方向”的风险(即具有指向相反方向的梯度)。
这些“更智能”的变体之一是建议的 ADAM 方法。有一篇被高引用paper about it ,这可以让您对引擎盖下发生的事情有一个模糊的了解。本质上,SGD 是一种非常简单的解决方案,没有任何特殊假设或内置优化。(据我所知,例如 ADAM 使用一阶导数)
存在许多不同的,并且有大量的 theoretical articles (和 practical comparisons )不同的实现。至少部分了解参数的作用并了解将它们设置为哪些值是有意义的,这很有值(value)。
例如,您已经将学习率设置为一个合理的值 (0.001);就个人而言,我通常会以 0.001-0.01 之间的值结束,如果我有更大的学习率,可能会使用学习率随时间衰减。
关于neural-network - Gensim doc2vec 300 维向量输入 keras,lstm 模型不工作。损失没有减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52473530/
假设我有一个组织 ID 向量 let orgs = vec![1, 3, 14, 12]; 然后我调用 .iter()在 each 上获取每个组织的事件,其中函数 get_events_for()返回
这个问题已经有答案了: What are Rust's exact auto-dereferencing rules? (4 个回答) 已关闭 3 年前。 我很困惑为什么这个函数 get适用于 Vec
let a = vec![ vec![1, 2], vec![3, 4], vec![5, 6] ]; 怎么才能聚成一个Vec包含在所有 Vec 中的所有值s 在 a ? 最佳答案 您可以使用 fla
我在HashMap, Vec>中有数据,我想将该数据作为字节缓冲区(单个Vec)写入文件,然后从文件中读取回去并重建HashMap结构。 是否有建立像这样的平坦化和恢复 map 的算法?我可以将元数据
我正在寻找一种“使用rust ”的方式来将 Vec 累积到 Vec 中,以便将每个内部 Vec 的第一个元素加在一起,将每个 Vec 的每个第二个元素加在一起,等等......,并将结果收集到 Vec
我正在寻找一种“使用rust ”的方式来将 Vec 累积到 Vec 中,以便将每个内部 Vec 的第一个元素加在一起,将每个 Vec 的每个第二个元素加在一起,等等......,并将结果收集到 Vec
我正在尝试使用 selection_sort 创建一个已排序的向量,同时保留原始未排序的向量: fn main() { let vector_1: Vec = vec![15, 23, 4,
在 https://doc.rust-lang.org/std/vec/struct.Vec.html#method.iter , 我只能在页面左侧的索引侧边栏中找到iter。但是,找不到 iter_
我正在尝试从 Vec> 创建一个集合向量 ( Vec> ) .这是我目前的进展: use std::collections::BTreeSet; fn main() { // The data
我错过了向量向量初始化的一些东西。在第一种方法中,我尝试了这段代码: let mut landFirst: Vec> = Vec::with_capacity(width); for v in lan
我想设计一个类似于示例 here 的函数除了我的情况,iproduct 的参数数量在编译时是未知的。正如 here 所解释的那样,这在 python 中很容易完成。 . 我已经尝试使用 itertoo
我有一个我不明白的问题: fn cipher_with(key: &[u8], data: &[u8]) -> Vec { let data_len = 16; let mut dat
我刚开始学习 Rust,我偶然发现了这个愚蠢的问题: error: mismatched types: expected `&[u8]` but found `&collections::vec::V
这个问题在这里已经有了答案: How to filter a vector of custom structs? (1 个回答) 关闭 4 年前。 我有一个接受 &Vec 的函数(其中 Word 是
试图创建一个 HashMap 的数据库结构向量。每个Vec包含 Box . use std::collections::HashMap; trait Model { fn id(&self)
我正在编写一个使用 Vec> 的库类型以按列优先顺序存储数据(每个内部 Vec 代表一列)。用户可以创建 Vec>具有任何行和列长度,但所有列都被限制为相同的长度。 有时我需要高效地遍历 Vec>按行
在 GLSL 中我不明白什么是“in”和“out”变量,这是什么意思?这是我从教程中复制的代码示例。 // Shader sources const GLchar* vertexSource =
例如 [[5,6][2,3][2,5][2,9][1,6]]先按第一个元素升序排序,当一个元素相等时,按第二个元素降序排序,得到[1,6],[2,9],[2,5],[2,3] ],[5,6] 最佳答案
我正在尝试为类型为Vec>的向量创建可变的迭代器 迭代器代码: pub struct IterMut { iter: &'a mut Vec>, ix: usize, inne
我是 rust 编程的新手。我想用递归实现合并排序。这是我的代码: fn merge(a: &mut Vec, b: &mut Vec) -> Vec { let mut temp: Vec
我是一名优秀的程序员,十分优秀!