![](/img/trans.png)
[英]How to split images into test and train set using my own data in TensorFlow
[英]how to split data into test and train using tensorflow
我对张量流很陌生。 我参加了一个在线课程,但我仍然有很多与数据预处理相关的问题。 如果有人能帮助我,我将不胜感激!!
我的目标是训练一个模型,根据内部结构将葡萄牙语名词分为两个性别类别(女性和男性)。 因此,为此,我有一个包含大约 4300 个名词及其类别(F 和 M 标签)的文件。
第一个问题:我打开了名词文件,我首先标记了单词,然后填充了它们。 我有一个把标签放在一个单独的文件中。 标签文件是一个 txt 列表,其中包含标签“f”和“m”。 我已将它们转换为 0 和 1 整数,然后将它们转换为一个 numpy 数组。 我还将填充的名词转换为 numpy 数组。 那是对的吗?
奇怪的是我把epoch的数量设置为100,但是程序一直在训练……
第二个问题:
如何将我的火车和标签分成 test 和 test_labels?
到目前为止,我的代码如下:
from collections import defaultdict
import nltk
from nltk.tokenize import word_tokenize
from nltk.tokenize import sent_tokenize,wordpunct_tokenize
import re
import os
import sys
from pathlib import Path
import numpy as np
import numpy
import tensorflow as tf
while True:
try:
file_to_open =Path(input("Please, insert your file path: "))
with open(file_to_open,'r', encoding="utf-8") as f:
words = f.read()
break
except FileNotFoundError:
print("\nFile not found. Better try again")
except IsADirectoryError:
print("\nIncorrect Directory path.Try again")
corpus=words.split('\n')
labels = []
new_labels=[]
nouns = []
for i in corpus:
if i == '0':
labels.append(i)
elif i== '1':
labels.append(i)
else:
nouns.append(i)
for x in labels:
new_labels.append(int(x))
training_labels= numpy.array(new_labels)
training_nouns=[]
for w in nouns:
a=list(w)
b=' '.join([str(elem) for elem in a]) + ',' + ' '
training_nouns.append(b)
vocab_size = 10000
embedding_dim = 16
max_length = 120
trunc_type='post'
oov_tok = "<OOV>"
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
tokenizer = Tokenizer(num_words = vocab_size, oov_token=oov_tok)
tokenizer.fit_on_texts(training_nouns)
word_index = tokenizer.word_index
nouns_sequences = tokenizer.texts_to_sequences(training_nouns)
padded = pad_sequences(nouns_sequences,maxlen=max_length)
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim,
input_length=max_length),
tf.keras.layers.GlobalAveragePooling1D(),
tf.keras.layers.Dense(36, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=.
['accuracy'])
model.summary()
training_padded = np.array(padded)
num_epochs = 150
model.fit(training_padded, training_labels, epochs=num_epochs)
如果你不应该使用 Tensorflow。 您可以像这样使用train_test_split
scikit-learn
函数(您可以继续使用 tensorflow):
from sklearn.model_selection import train_test_split
train_data,train_labels,test_data,test_labels=train_test_split(YOUR DATA,YOUR LABELS)
请参阅此处了解更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.