JAVA 里面的setget
时间: 2023-05-20 19:06:49 浏览: 45
Set和Get是Java中的两个方法,用于设置和获取类的属性值。Set方法用于设置属性值,Get方法用于获取属性值。这两个方法通常被称为访问器方法,它们是Java面向对象编程中的重要概念。在Java中,我们可以使用这些方法来保护类的属性,同时也可以控制对属性的访问。
相关问题
java代码里面引入gpt
在 Java 代码中使用 GPT 模型需要进行以下步骤:
1. 安装 Java 11 及以上版本和 Maven。
2. 在 Maven 项目的 `pom.xml` 文件中添加以下依赖项:
```
<dependency>
<groupId>ai.djl</groupId>
<artifactId>ai-djl-engine</artifactId>
<version>0.11.0</version>
</dependency>
<dependency>
<groupId>ai.djl.mxnet</groupId>
<artifactId>mxnet-engine</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>ai.djl.mxnet</groupId>
<artifactId>mxnet-model-zoo</artifactId>
<version>1.8.0</version>
</dependency>
```
3. 创建 `GptModel` 类,继承自 `AbstractBlock`,并实现 `Block` 接口的 `forward` 方法,代码如下:
```
import ai.djl.ndarray.NDManager;
import ai.djl.ndarray.types.Shape;
import ai.djl.nn.AbstractBlock;
import ai.djl.nn.Block;
import ai.djl.nn.SequentialBlock;
import ai.djl.nn.core.Linear;
public class GptModel extends AbstractBlock {
private SequentialBlock block;
public GptModel() {
super(0);
block = new SequentialBlock();
block.add(new Linear.Builder().setUnits(256).build());
block.add(new Linear.Builder().setUnits(512).build());
block.add(new Linear.Builder().setUnits(1024).build());
block.add(new Linear.Builder().setUnits(2048).build());
block.add(new Linear.Builder().setUnits(4096).build());
block.add(new Linear.Builder().setUnits(8192).build());
block.add(new Linear.Builder().setUnits(16384).build());
block.add(new Linear.Builder().setUnits(32768).build());
}
@Override
public Shape[] getOutputShapes(Shape[] inputShapes) {
return new Shape[] { inputShapes[0] };
}
@Override
protected NDArray forwardInternal(
ParameterStore parameterStore, NDArray input, boolean training, PairList<String, Object> pairList) {
return block.forward(parameterStore, input, training, pairList);
}
public static Builder builder() {
return new Builder();
}
public static class Builder {
private Builder() {}
public GptModel build() {
return new GptModel();
}
}
}
```
4. 在代码中加载 GPT 模型并进行预测,代码如下:
```
import ai.djl.Model;
import ai.djl.basicmodelzoo.BasicModelZoo;
import ai.djl.inference.Predictor;
import ai.djl.modality.Input;
import ai.djl.ndarray.NDArray;
import ai.djl.ndarray.NDManager;
import ai.djl.ndarray.types.DataType;
import ai.djl.ndarray.types.Shape;
import ai.djl.translate.Batchifier;
import ai.djl.translate.Translator;
import ai.djl.translate.TranslatorContext;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
// Load the GPT model
Model model = Model.newInstance("GPT");
model.setBlock(GptModel.builder().build());
model.load(Paths.get("gpt.params"));
// Create a predictor to do inference
Predictor<NDArray, NDArray> predictor = model.newPredictor(new Translator<NDArray, NDArray>() {
@Override
public NDArray processInput(TranslatorContext ctx, NDArray input) {
return input.toType(DataType.INT32, false);
}
@Override
public NDArray processOutput(TranslatorContext ctx, NDArray output) {
return output.argMax(1);
}
@Override
public Batchifier getBatchifier() {
return Batchifier.STACK;
}
});
// Prepare the input data
String text = "Hello world!";
int[] inputArray = Arrays.stream(text.split(" "))
.mapToInt(Integer::parseInt).toArray();
NDArray input = NDManager.newBaseManager().create(inputArray, new Shape(inputArray.length));
// Do the inference
NDArray output = predictor.predict(input);
// Print the output
System.out.println(output);
}
}
```
在以上代码中,我们创建了一个 `GptModel` 类,它是一个简单的神经网络结构,由多个全连接层组成。我们在 `Main` 类中加载了 GPT 模型,并创建了一个 `Predictor` 对象进行预测。我们将输入数据作为一个整数数组传递给预测器,并获得输出数据的 `NDArray` 对象,输出数据是一个整数数组,表示模型的预测结果。
java 如何获取map里面的值
可以使用 Map 的 get 方法来获取指定键对应的值。例如,假设有一个 Map 对象 map,其中包含了键值对 "key1" -> "value1",可以使用以下代码获取值:
```
String value = map.get("key1");
```
如果需要遍历 Map 中的所有键值对并获取值,可以使用以下代码:
```
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// 进行操作
}
```
其中,entrySet 方法返回一个包含 Map 中所有键值对的 Set 集合,遍历时可以依次获取每个键值对的键和值。