Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 转换TensorFlow教程以使用我自己的数据_Python_Tensorflow - Fatal编程技术网

Python 转换TensorFlow教程以使用我自己的数据

Python 转换TensorFlow教程以使用我自己的数据,python,tensorflow,Python,Tensorflow,这是我最后一个问题的后续部分 我现在正在进行下一步,需要更多的帮助。我正在尝试替换这行代码 batch = mnist.train.next_batch(100) 替换我自己的数据。我在StackOverflow上找到了这个答案:但我不明白: 1) 为什么.next_batch()对我的张量不起作用。我是不是做得不对 2) 如何实现.next_batch()上问题的答案中给出的伪代码 我目前有两个张量对象,一个带有我希望用来训练模型的参数(dataVar_tensor),另一个带有正确的结果(

这是我最后一个问题的后续部分

我现在正在进行下一步,需要更多的帮助。我正在尝试替换这行代码

batch = mnist.train.next_batch(100)
替换我自己的数据。我在StackOverflow上找到了这个答案:但我不明白:

1) 为什么.next_batch()对我的张量不起作用。我是不是做得不对

2) 如何实现.next_batch()上问题的答案中给出的伪代码

我目前有两个张量对象,一个带有我希望用来训练模型的参数(dataVar_tensor),另一个带有正确的结果(depth_tensor)。我显然需要保持它们之间的关系,以使用正确的参数保持正确的响应

请您花点时间帮我理解发生了什么,并替换这行代码,好吗


非常感谢

为了保留格式和缩进,我去掉了不相关的东西。希望现在一切都清楚了。下面的代码以N行(N在顶部的常量中指定)为单位批量读取CSV文件。每行包含一个日期(第一个单元格),然后是一个浮动列表(480个单元格)和一个热向量(3个单元格)。然后,代码简单地打印这些日期、浮动和一个热向量的批,并读取它们。它打印它们的位置通常是您实际运行模型的位置,并将它们输入到占位符变量的位置

请记住,这里它将每一行作为字符串读取,然后将该行中的特定单元格转换为浮点数,因为第一个单元格更容易作为字符串读取。如果所有数据都是数字,那么只需将默认值设置为float/int而不是“a”,并去掉将字符串转换为float的代码。否则就不需要了

我发表了一些评论来澄清它在做什么。如果有不清楚的地方,请告诉我

import tensorflow as tf

fileName = 'YOUR_FILE.csv'

try_epochs = 1
batch_size = 3

TD = 1 # this is my date-label for each row, for internal pruposes
TS = 480 # this is the list of features, 480 in this case
TL = 3 # this is one-hot vector of 3 representing the label

# set defaults to something (TF requires defaults for the number of cells you are going to read)
rDefaults = [['a'] for row in range((TD+TS+TL))]

# function that reads the input file, line-by-line
def read_from_csv(filename_queue):
    reader = tf.TextLineReader(skip_header_lines=False) # i have no header file
    _, csv_row = reader.read(filename_queue) # read one line
    data = tf.decode_csv(csv_row, record_defaults=rDefaults) # use defaults for this line (in case of missing data)
    dateLbl = tf.slice(data, [0], [TD]) # first cell is my 'date-label' for internal pruposes
    features = tf.string_to_number(tf.slice(data, [TD], [TS]), tf.float32) # cells 2-480 is the list of features
    label = tf.string_to_number(tf.slice(data, [TD+TS], [TL]), tf.float32) # the remainin 3 cells is the list for one-hot label
    return dateLbl, features, label

# function that packs each read line into batches of specified size
def input_pipeline(fName, batch_size, num_epochs=None):
    filename_queue = tf.train.string_input_producer(
        [fName],
        num_epochs=num_epochs,
        shuffle=True)  # this refers to multiple files, not line items within files
    dateLbl, features, label = read_from_csv(filename_queue)
    min_after_dequeue = 10000 # min of where to start loading into memory
    capacity = min_after_dequeue + 3 * batch_size # max of how much to load into memory
    # this packs the above lines into a batch of size you specify:
    dateLbl_batch, feature_batch, label_batch = tf.train.shuffle_batch(
        [dateLbl, features, label], 
        batch_size=batch_size,
        capacity=capacity,
        min_after_dequeue=min_after_dequeue)
    return dateLbl_batch, feature_batch, label_batch

# these are the date label, features, and label:
dateLbl, features, labels = input_pipeline(fileName, batch_size, try_epochs)

with tf.Session() as sess:

    gInit = tf.global_variables_initializer().run()
    lInit = tf.local_variables_initializer().run()

    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)

    try:
        while not coord.should_stop():
            # load date-label, features, and label:
            dateLbl_batch, feature_batch, label_batch = sess.run([dateLbl, features, labels])      

            print(dateLbl_batch);
            print(feature_batch);
            print(label_batch);
            print('----------');

    except tf.errors.OutOfRangeError:
        print("Done looping through the file")

    finally:
        coord.request_stop()

    coord.join(threads)

刚刚看到你在上一篇文章中的更新。很高兴看到你成功了。看起来您是在反向尝试—首先将CSV中的数据加载到数据帧中,然后尝试批量读取数据帧中的内容?我的印象是,“典型的”TF方式是直接从CSV文件中读取内容,这种方式TF已经内置了许多有用的排队/随机化/批处理功能。请参阅我们之前与某人讨论的关于从多个CSV文件中读取行的机制。希望应该足够清楚:顺便说一句,这将避免您将数据帧转换为张量的问题,因为这样所有内容都可以直接从CSV中切片并加载到张量中,并且在需要时完成,而不是提前完成,因此可以为您节省资源。@VS\u FF我有一个文本文件,其中包含我想要训练的变量,预期的结果和其他一些东西。你是说我可以直接在TensorFlow中进行所有的数据拆分和准备吗?老实说,我没有完全理解你在其他线程中的示例是的,它可以完成以下所有操作:逐行阅读文本,将每行拆分为一组观察值,观察值的标签,以及一些其他用于监视的内容。TF然后将每一行读取操作打包成给定大小的一批,并随机化采样过程,以便文件不是按顺序读取,而是随机采样。唯一的问题是它是一个CSV文件,我想你的文件也是以逗号或空格分隔的?我想我知道这段代码中发生了什么,谢谢。我已经能够让代码在我的数据上运行。但是,我看不到如何编辑代码以允许我过滤某些值。例如,在当前情况下,我只对实现=1的行感兴趣。这能做到吗?再次感谢您花时间帮助memaybe对第一个定义函数的返回值进行一点实验?您可以看到,代码肯定是用来评估诸如'acutalie==1'之类的条件的,不管是什么条件。例如,我不确定train_shuffle_batch是否会理解如果该函数返回null,则需要跳过给定的行,或者类似的逻辑?我已经尝试向“read_from_csv”函数添加一个while循环,但我无法访问tensor对象中的数字,将其设置为循环的条件。有没有一种简单的方法可以做到这一点?我认为使用数据帧在TF之外进行过滤可能会更容易、更干净。这样你就可以让TF去做它真正想做的事情。例如,创建原始的DF=pandas.read_csv(),然后创建另一个DF_1=DF[YourCondition=True],然后将DF_1.to_csv()保存?哦,是的,这是一个如此简单的解决方案,我没有想到!)