public class RadioButtonListView extends Application {
public static final ObservableList names =
FXCollections.observableArrayList();
private ToggleGroup group = new ToggleGroup();
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("List View Sample");
final ListView listView = new ListView();
listView.setPrefSize(200, 250);
listView.setEditable(true);
names.addAll(
"Adam", "Alex", "Alfred", "Albert",
"Brenda", "Connie", "Derek", "Donny",
"Lynne", "Myrtle", "Rose", "Rudolph",
"Tony", "Trudy", "Williams", "Zach"
);
listView.setItems(names);
listView.setCellFactory(param -> new RadioListCell());
StackPane root = new StackPane();
root.getChildren().add(listView);
primaryStage.setScene(new Scene(root, 200, 250));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
private class RadioListCell extends ListCell<String> {
RadioButton radioButton;
ChangeListener<Boolean> radioListener = (src, ov, nv) -> radioChanged(nv);
WeakChangeListener<Boolean> weakRadioListener = new WeakChangeListener(radioListener);
public RadioListCell() {
radioButton = new RadioButton();
radioButton.selectedProperty().addListener(weakRadioListener);
radioButton.setFocusTraversable(false);
// let it span the complete width of the list
// needed in fx8 to update selection state
radioButton.setMaxWidth(Double.MAX_VALUE);
}
protected void radioChanged(boolean selected) {
if (selected && getListView() != null && !isEmpty() && getIndex() >= 0) {
getListView().getSelectionModel().select(getIndex());
}
}
@Override
public void updateItem(String obj, boolean empty) {
super.updateItem(obj, empty);
if (empty) {
setText(null);
setGraphic(null);
radioButton.setToggleGroup(null);
} else {
radioButton.setText(obj);
radioButton.setToggleGroup(group);
radioButton.setSelected(isSelected());
setGraphic(radioButton);
}
}
}
}
我的问题是: 如何计算特征/通道输出的数量,在这种情况下,第一层是32,第二层是64,第三层是1024?如果我在CNN中添加多于或少于32,64,1024的数字会产生什么影响?
答案 0 :(得分:0)
此CNN模型的限制如下:
7x7
由输入图像大小决定。在这种情况下,在2次下采样(池化)操作之后它是28x28
。32
,64
)可以是任意的,但必须与下一层的深度值相对应。因此,如果您在32
中将48
更改为wc1
,则必须在32
中将48
更改为wc2
。1024
中的wd1
必须与1024
中的out
相对应。除此之外,您可以设置任何值,但可能会或可能不会提高网络性能。通常,研究将它们设置得尽可能大,以便模型仍然适合GPU内存,因为更大的模型往往更好地学习。同样有必要从早期层向下增加尺寸,以捕获学习特征的复杂性,即第二层中的变化大于第一层中的变化。
答案 1 :(得分:0)
作为过滤器的数量,例如32,64,128,1024是设计决策,模型设计者决定使用的过滤器数量。在这种情况下,你。通常使用2的幂2 ^ 5 = 32,2 ^ 6 = 64等。除了影响模型将具有的参数数量之外,不同数量的滤波器显然会对计算所需的操作数量产生影响。学习。
e.g。尺寸为5x5x1(高x宽x通道)的10个滤波器将具有(5 x 5 x 1 + 1)x 10 = 110参数进行训练。请注意,+ 1表示偏差项。
我建议阅读以下内容,特别是有关ConvNet架构的部分。 http://cs231n.github.io/convolutional-networks/#architectures
对于卷积算术,我发现“深度学习的卷积算法指南”资源丰富:https://arxiv.org/abs/1603.07285