Skip to content

Commit 4e51788

Browse files
committed
remove HasNext
1 parent b825c79 commit 4e51788

File tree

6 files changed

+15
-21
lines changed

6 files changed

+15
-21
lines changed

doc/design/cpp_data_feeding.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ class ReaderBase {
2020
PADDLE_ENFORCE(!shapes_.empty());
2121
}
2222
// Read the next batch of data. (A 'batch' can be only one instance)
23+
// If the next batch doesn't exist, the 'out' will be an empty std::vector.
2324
virtual void ReadNext(std::vector<LoDTensor>* out) = 0;
24-
// Show whether the next bacth exists.
25-
virtual bool HasNext() const = 0;
2625

2726
// Reinitialize the reader and read the file from the begin.
2827
virtual void ReInit() = 0;

paddle/fluid/framework/reader.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class ReaderBase {
2626
PADDLE_ENFORCE(!shapes_.empty());
2727
}
2828
virtual void ReadNext(std::vector<LoDTensor>* out) = 0;
29-
virtual bool HasNext() const = 0;
3029

3130
virtual void ReInit() = 0;
3231

@@ -52,8 +51,6 @@ class DecoratedReader : public ReaderBase {
5251
PADDLE_ENFORCE_NOT_NULL(reader_);
5352
}
5453

55-
bool HasNext() const override { return reader_->HasNext(); }
56-
5754
void ReInit() override { reader_->ReInit(); }
5855

5956
protected:
@@ -69,7 +66,6 @@ class ReaderHolder {
6966
ReaderBase* Get() const { return reader_.get(); }
7067

7168
void ReadNext(std::vector<LoDTensor>* out) { reader_->ReadNext(out); }
72-
bool HasNext() const { return reader_->HasNext(); }
7369
void ReInit() { reader_->ReInit(); }
7470

7571
DDim shape(size_t idx) const { return reader_->shape(idx); }

paddle/fluid/operators/read_op.cc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,16 @@ class ReadOp : public framework::OperatorBase {
6060
const platform::Place& dev_place) const override {
6161
framework::ReaderHolder* reader =
6262
scope.FindVar(Input("Reader"))->GetMutable<framework::ReaderHolder>();
63-
if (!reader->HasNext()) {
63+
std::vector<std::string> out_arg_names = Outputs("Out");
64+
std::vector<framework::LoDTensor> ins;
65+
reader->ReadNext(&ins);
66+
if (ins.empty()) {
6467
reader->ReInit();
68+
reader->ReadNext(&ins);
6569
PADDLE_ENFORCE(
66-
reader->HasNext(),
70+
!ins.empty(),
6771
"Reader can not read the next data even it has been re-initialized.");
6872
}
69-
std::vector<std::string> out_arg_names = Outputs("Out");
70-
std::vector<framework::LoDTensor> ins;
71-
reader->ReadNext(&ins);
7273
PADDLE_ENFORCE_EQ(ins.size(), out_arg_names.size());
7374
for (size_t i = 0; i < ins.size(); ++i) {
7475
auto* out =

paddle/fluid/operators/reader/create_batch_reader_op.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ void BatchReader::ReadNext(std::vector<framework::LoDTensor>* out) {
6868
buffer_.clear();
6969
buffer_.reserve(batch_size_);
7070
for (int i = 0; i < batch_size_; ++i) {
71-
if (reader_->HasNext()) {
72-
buffer_.push_back(std::vector<framework::LoDTensor>());
73-
reader_->ReadNext(&buffer_.back());
74-
} else {
71+
buffer_.push_back(std::vector<framework::LoDTensor>());
72+
reader_->ReadNext(&buffer_.back());
73+
if (buffer.back().empty()) {
74+
buffer_.pop_back();
7575
break;
7676
}
7777
}

paddle/fluid/operators/reader/create_random_data_generator_op.cc

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ class RandomDataGenerator : public framework::FileReader {
5050
}
5151
}
5252

53-
bool HasNext() const override { return true; }
54-
5553
void ReInit() override { return; }
5654

5755
private:

paddle/fluid/operators/reader/create_shuffle_reader_op.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ void ShuffleReader::ReadNext(std::vector<framework::LoDTensor>* out) {
3939
buffer_.clear();
4040
buffer_.reserve(buffer_size_);
4141
for (int i = 0; i < buffer_size_; ++i) {
42-
if (reader_->HasNext()) {
43-
buffer_.push_back(std::vector<framework::LoDTensor>());
44-
reader_->ReadNext(&buffer_.back());
45-
} else {
42+
buffer_.push_back(std::vector<framework::LoDTensor>());
43+
reader_->ReadNext(&buffer_.back());
44+
if (buffer_.back().empty()) {
45+
buffer_.pop_back();
4646
break;
4747
}
4848
}

0 commit comments

Comments
 (0)