Keras.NET 如何使用 KerasIterator
Keras.NET How to Use KerasIterator
我想做与 F. Chollet 相同的事情 notebook 但在 C# 中。
但是,我找不到迭代 KerasIterator 对象的方法:
def extract_features(directory, sample_count):
features = np.zeros(shape=(sample_count, 4, 4, 512))
labels = np.zeros(shape=(sample_count))
generator = datagen.flow_from_directory(
directory,
target_size=(150, 150),
batch_size=20,
class_mode='binary'
)
i = 0
for inputs_batch, labels_batch in generator:
features_batch = conv_base.predict(inputs_batch)
features[i * 20 : (i + 1) * 20] = features_batch
labels[i * 20 : (i + 1) * 20] = labels_batch
i += 1
if i * 20 >= sample_count:
break
return features, labels
我当前的 C# 函数如下。
详情:
- foreach 循环在 KerasIterator
上给我一个 'Compiler Error CS1579'
- for 循环是不可能的,因为 KerasIterator 没有长度(或大小等)
private List<NDarray> ExtractFeatures(ImageDataGenerator datagen, String directory, int sample_count)
{
// create the return NDarrays
NDarray features = np.zeros(shape: (sample_count, 4, 4, 512));
NDarray labels = np.zeros(shape: (sample_count, 4, 4, 512));
KerasIterator generator = datagen.FlowFromDirectory(
directory,
target_size: (150, 150).ToTuple(),
batch_size: 20,
class_mode: "binary"
);
int i = 0;
/* how do I iterate on 'generator' here, in a similar way than in Python? */
// return the List element
return new List<NDarray> { features, labels };
}
截至 2020 年 4 月 19 日,Keras.NET
GitHub 页面上的 this 问题中记录的 .NET Wrapper 是不可能的
我想做与 F. Chollet 相同的事情 notebook 但在 C# 中。
但是,我找不到迭代 KerasIterator 对象的方法:
def extract_features(directory, sample_count):
features = np.zeros(shape=(sample_count, 4, 4, 512))
labels = np.zeros(shape=(sample_count))
generator = datagen.flow_from_directory(
directory,
target_size=(150, 150),
batch_size=20,
class_mode='binary'
)
i = 0
for inputs_batch, labels_batch in generator:
features_batch = conv_base.predict(inputs_batch)
features[i * 20 : (i + 1) * 20] = features_batch
labels[i * 20 : (i + 1) * 20] = labels_batch
i += 1
if i * 20 >= sample_count:
break
return features, labels
我当前的 C# 函数如下。
详情:
- foreach 循环在 KerasIterator 上给我一个 'Compiler Error CS1579'
- for 循环是不可能的,因为 KerasIterator 没有长度(或大小等)
private List<NDarray> ExtractFeatures(ImageDataGenerator datagen, String directory, int sample_count)
{
// create the return NDarrays
NDarray features = np.zeros(shape: (sample_count, 4, 4, 512));
NDarray labels = np.zeros(shape: (sample_count, 4, 4, 512));
KerasIterator generator = datagen.FlowFromDirectory(
directory,
target_size: (150, 150).ToTuple(),
batch_size: 20,
class_mode: "binary"
);
int i = 0;
/* how do I iterate on 'generator' here, in a similar way than in Python? */
// return the List element
return new List<NDarray> { features, labels };
}
截至 2020 年 4 月 19 日,Keras.NET
GitHub 页面上的 this 问题中记录的 .NET Wrapper 是不可能的