java - 如何在数据集中存储 INDArray 的列表
问题描述
对于强化学习,我创建了两个List<INDArray>
状态以及相应的移动预测和奖励值。我怎样才能将这两个List
s 变成一个org.nd4j.linalg.dataset.api.DataSet
解决方案
大多数方法也接受 org.nd4j.linalg.dataset.api.iterator.DataSetIterator,而不仅仅是 org.nd4j.linalg.dataset.DataSet。所以你可以使用这个代码:
import java.util.ArrayList;
import java.util.List;
import org.nd4j.linalg.dataset.DataSet;
import org.nd4j.linalg.dataset.api.DataSetPreProcessor;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
public class DataSetIteratorImpl implements DataSetIterator {
private static final long serialVersionUID = -3010080072504907088L;
private List<DataSet> entries;
private int current = 0;
private DataSetPreProcessor dataSetPreProcessor;
public DataSetIteratorImpl() {
entries = new ArrayList<DataSet>();
reset();
}
public void addEntry(DataSet entry) {
entries.add(entry);
}
@Override
public boolean hasNext() {
return current < entries.size();
}
@Override
public DataSet next() {
return entries.get(current++);
}
@Override
public boolean asyncSupported() {
return false;
}
@Override
public int batch() {
return entries.size();
}
@Override
public DataSetPreProcessor getPreProcessor() {
return dataSetPreProcessor;
}
@Override
public void reset() {
current = 0;
}
@Override
public boolean resetSupported() {
return true;
}
@Override
public void setPreProcessor(DataSetPreProcessor _dataSetPreProcessor) {
dataSetPreProcessor = _dataSetPreProcessor;
}
@Override
public int inputColumns() {
throw new UnsupportedOperationException();
}
@Override
public DataSet next(int arg0) {
throw new UnsupportedOperationException();
}
@Override
public List<String> getLabels() {
throw new UnsupportedOperationException();
}
@Override
public int totalOutcomes() {
throw new UnsupportedOperationException();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
您可以使用以下代码创建迭代器:
DataSetIterator iterator = new DataSetIteratorImpl ();
然后当你填充迭代器时,只需调用几次:
iterator.addEntry(new DataSet(INDArrayinput, INDArrayoutput));
之后,迭代器就可以用作训练集了。
推荐阅读
- python - 如何让 MIMEText 呈现 HTML?
- java - 为 gradle 添加实现以添加广告时出错
- symfony - 删除 Symfony4 的外键和级联问题
- javascript - 循环包含 Javascript 中的 Ajax 调用的函数
- android - 无法从 Android Studio 4.0 Canary 拉/推 git
- java - 如何使用 RESTHightLevelCient 执行包含多个字符串的搜索
- python - 将 CSV 文件转换为 HTML 并使用 Pandas 在浏览器中显示
- python - 理解 Django 应用程序依赖项的问题
- java - Bukkit - 使用自定义配方添加自定义项目
- c++ - 将m个灰色块用红色着色的计数方法,其中红色块应成组,计数至少为n