- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个深度学习模型,我必须在其中输入尺寸为 100X100 的图像。我有的数据是
训练图像 - x_train (530,100,100)
,火车标签 - y_train (530,4)
,
测试图像 - x_test(89,100,100)
,测试标签 - y_test(89,4)
。
使用-读取数据集mnist
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
它会生成这样的东西-
Datasets(train=tensorflow.contrib.learn.python.learn.datasets.mnist.DataSet object at 0x7fd64cae76a0,
validation=tensorflow.contrib.learn.python.learn.datasets.mnist.DataSet object at 0x7fd64cae7be0,
test=tensorflow.contrib.learn.python.learn.datasets.mnist.DataSet object at 0x7fd64cae7400)
我必须以相同的格式转换我的数据,这样才能与我拥有的代码一起使用。请帮忙
epochs = 20
batch_size = 100
image_vector = 28*28
for i in range(epochs):
training_accuracy = []
epoch_loss = []
for ii in tqdm(range(mnist.train.num_examples // batch_size)):
batch = mnist.train.next_batch(batch_size)
images = batch[0].reshape((-1, 28, 28))
targets = batch[1]
c, _, a = session.run([model.cost, model.opt, model.accuracy], feed_dict={model.inputs: images, model.targets:targets})
epoch_loss.append(c)
training_accuracy.append(a)
print("Epoch: {}/{}".format(i, epochs), " | Current loss: {}".format(np.mean(epoch_loss)),
" | Training accuracy: {:.4f}%".format(np.mean(training_accuracy)))
编辑 1: 按照建议,我做了以下操作-
num_examples=271
batch_size=10
buffer_size=271
num_cpu_cores=4
dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
dataset = dataset.shuffle(buffer_size, reshuffle_each_iteration=True).repeat()
#dataset = dataset.apply(tf.data.batch( batch_size=batch_size, num_parallel_batches=num_cpu_cores))
#batch1=dataset.batch(10)
iterator = dataset.make_one_shot_iterator()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for ii in tqdm(range(num_examples // batch_size)):
batch = iterator.get_next()
images = batch[0]
targets = batch[1]
c, _, a = sess.run([model.cost, model.opt, model.accuracy])
epoch_loss.append(c)
training_accuracy.append(a)
print("Epoch: {}/{}".format(i, epochs), " | Current loss: {}".format(np.mean(epoch_loss)),
" | Training accuracy: {:.4f}%".format(np.mean(training_accuracy)))
图像和目标不是批处理,而是单个图像和标签。
(, )
请建议如何批量处理数据并输入 sess.run
编辑 2:这是算法的完整代码-
def LSTM_layer(lstm_cell_units, number_of_layers, batch_size, dropout_rate=0.8):
'''
This method is used to create LSTM layer/s for PixelRNN
Input(s): lstm_cell_unitis - used to define the number of units in a LSTM layer
number_of_layers - used to define how many of LSTM layers do we want in the network
batch_size - in this method this information is used to build starting state for the network
dropout_rate - used to define how many cells in a layer do we want to 'turn off'
Output(s): cell - lstm layer
init_state - zero vectors used as a starting state for the network
'''
#layer = tf.contrib.rnn.BasicLSTMCell(lstm_cell_units)
layer = tf.nn.rnn_cell.LSTMCell(lstm_cell_units,name='basic_lstm_cell')
if dropout_rate != 0:
layer = tf.contrib.rnn.DropoutWrapper(layer, dropout_rate)
cell = tf.contrib.rnn.MultiRNNCell([layer]*number_of_layers)
init_size = cell.zero_state(batch_size, tf.float32)
return cell, init_size
def rnn_output(lstm_outputs, input_size, output_size):
'''
Output layer for the lstm netowrk
Input(s): lstm_outputs - outputs from the RNN part of the network
input_size - in this case it is RNN size (number of neuros in RNN layer)
output_size - number of neuros for the output layer == number of classes
Output(s) - logits,
'''
outputs = lstm_outputs[:, -1, :]
weights = tf.Variable(tf.random_uniform([input_size, output_size]), name='rnn_out_weights')
bias = tf.Variable(tf.zeros([output_size]), name='rnn_out_bias')
output_layer = tf.matmul(outputs, weights) + bias
return output_layer
def loss_optimizer(rnn_out, targets, learning_rate):
'''
Function used to calculate loss and minimize it
Input(s): rnn_out - logits from the fully_connected layer
targets - targets used to train network
learning_rate/step_size
Output(s): optimizer - optimizer of choice
loss - calculated loss function
'''
loss = tf.nn.softmax_cross_entropy_with_logits(logits=rnn_out, labels=targets)
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(loss)
return optimizer, loss
class PixelRNN(object):
def __init__(self, learning_rate=0.001, batch_size=10, classes=4, img_size = (129, 251), lstm_size=64,
number_of_layers=1, dropout_rate=0.6,clip_rate=None):
'''
PixelRNN - call this class to create whole model
Input(s): learning_rate - how fast are we going to move towards global minima
batch_size - how many samples do we feed at ones
classes - number of classes that we are trying to recognize
img_size - width and height of a single image
lstm_size - number of neurons in a LSTM layer
number_of_layers - number of RNN layers in the PixelRNN
dropout_rate - % of cells in a layer that we are stopping gradients to flow through
'''
#This placeholders are just for images
self.inputs = tf.placeholder(tf.float32, [None, img_size[0], img_size[1]], name='inputs')
self.targets = tf.placeholder(tf.int32, [None, classes], name='targets')
cell, init_state = LSTM_layer(lstm_size, number_of_layers, batch_size, dropout_rate)
outputs, states = tf.nn.dynamic_rnn(cell, self.inputs, initial_state=init_state)
rnn_out = rnn_output(outputs, lstm_size, classes)
self.opt, self.cost = loss_optimizer(rnn_out, self.targets, learning_rate)
predictions = tf.nn.softmax(rnn_out)
currect_pred = tf.equal(tf.cast(tf.round(tf.argmax(predictions, 1)), tf.int32), tf.cast(tf.argmax(self.targets, 1), tf.int32))
self.accuracy = tf.reduce_mean(tf.cast(currect_pred, tf.float32))
self.predictions = tf.argmax(tf.nn.softmax(rnn_out), 1)
tf.reset_default_graph()
model = PixelRNN()
num_examples=271
batch_size=10
buffer_size=271
num_cpu_cores=4
dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
dataset = dataset.shuffle(buffer_size, reshuffle_each_iteration=True).repeat()
#dataset = dataset.apply(tf.data.batch( batch_size=batch_size, num_parallel_batches=num_cpu_cores))
dataset = dataset.batch(10) # apply batch to dataset
iterator = dataset.make_one_shot_iterator() # create iterator
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for ii in tqdm(range(num_examples // batch_size)):
batch = iterator.get_next() #run iterator
images = batch[0]
targets = batch[1]
c, _, a = sess.run([model.cost, model.opt, model.accuracy],feed_dict={model.inputs: images, model.targets:targets})
epoch_loss.append(c)
training_accuracy.append(a)
print("Epoch: {}/{}".format(i, epochs), " | Current loss: {}".format(np.mean(epoch_loss)),
" | Training accuracy: {:.4f}%".format(np.mean(training_accuracy)))
当我按照建议操作时,出现以下错误-
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles.For reference, the tensor object was Tensor("IteratorGetNext:0", shape=(?, 129, 251), dtype=float32) which was passed to the feed with key Tensor("inputs:0", shape=(?, 129, 251), dtype=float32).
无法弄清楚这里出了什么问题
最佳答案
如果您的数据集是 numpy 数组或图像文件列表,请使用 from_tensor_slices
。定义解析函数,如果使用文件名列表,请使用 read_file
和 decode_image
,否则只需应用任何预处理
def parse_image(filename, label):
file = tf.read_file(filename)
image = tf.image.decode_image(file)
#do any image/label preprocessing here
return image, label
然后定义数据集对象。通常,使用数据集的长度作为随机缓冲区,但这可能取决于大小。重复函数将控制时期(无值传递 = 无限迭代)。如果您不需要任何预处理,请将 dataset.apply
行替换为 dataset = dataset.batch(batch_size)
dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
dataset = dataset_train.shuffle(buffer_size, reshuffle_each_iteration=True).repeat()
dataset = dataset.apply(tf.data.batch( batch_size=batch_size, num_parallel_batches=num_cpu_cores))
创建迭代器。一般来说,没有必要使用 feed dict,只要你的输入数组不会导致 2GB graphdef 限制。
iterator = dataset.make_one_shot_iterator()
batch = iterator.get_next()
编辑:您需要从数据集中创建迭代器,这是整体结构:
dataset = dataset.batch(10) # apply batch to dataset
iterator = dataset.make_one_shot_iterator() # create iterator
batch = iterator.get_next() #run iterator
images = batch[0]
targets = batch[1]
logits = Model_function(images)
loss = loss_function(logits, targets)
train_op = optimizer.minimize()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(steps):
sess.run(train_op)
关于python - 在 TensorFlow 中读取与 mnist 数据集相同格式的新数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725074/
我想将模型及其各自训练的权重从 tensorflow.js 转换为标准 tensorflow,但无法弄清楚如何做到这一点,tensorflow.js 的文档对此没有任何说明 我有一个 manifest
我有一个运行良好的 TF 模型,它是用 Python 和 TFlearn 构建的。有没有办法在另一个系统上运行这个模型而不安装 Tensorflow?它已经经过预训练,所以我只需要通过它运行数据。 我
当执行 tensorflow_model_server 二进制文件时,它需要一个模型名称命令行参数,model_name。 如何在训练期间指定模型名称,以便在运行 tensorflow_model_s
我一直在 R 中使用标准包进行生存分析。我知道如何在 TensorFlow 中处理分类问题,例如逻辑回归,但我很难将其映射到生存分析问题。在某种程度上,您有两个输出向量而不是一个输出向量(time_t
Torch7 has a library for generating Gaussian Kernels在一个固定的支持。 Tensorflow 中有什么可比的吗?我看到 these distribu
在Keras中我们可以简单的添加回调,如下所示: self.model.fit(X_train,y_train,callbacks=[Custom_callback]) 回调在doc中定义,但我找不到
我正在寻找一种在 tensorflow 中有条件打印节点的方法,使用下面的示例代码行,其中每 10 个循环计数,它应该在控制台中打印一些东西。但这对我不起作用。谁能建议? 谢谢,哈米德雷萨, epsi
我想使用 tensorflow object detection API 创建我自己的 .tfrecord 文件,并将它们用于训练。该记录将是原始数据集的子集,因此模型将仅检测特定类别。我不明白也无法
我在 TensorFlow 中训练了一个聊天机器人,想保存模型以便使用 TensorFlow.js 将其部署到 Web。我有以下内容 checkpoint = "./chatbot_weights.c
我最近开始学习 Tensorflow,特别是我想使用卷积神经网络进行图像分类。我一直在看官方仓库中的android demo,特别是这个例子:https://github.com/tensorflow
我目前正在研究单图像超分辨率,并且我设法卡住了现有的检查点文件并将其转换为 tensorflow lite。但是,使用 .tflite 文件执行推理时,对一张图像进行上采样所需的时间至少是使用 .ck
我注意到 tensorflow 的 api 中已经有批量标准化函数。我不明白的一件事是如何更改训练和测试之间的程序? 批量归一化在测试和训练期间的作用不同。具体来说,在训练期间使用固定的均值和方差。
我创建了一个模型,该模型将 Mobilenet V2 应用于 Google colab 中的卷积基础层。然后我使用这个命令转换它: path_to_h5 = working_dir + '/Tenso
代码取自:- http://adventuresinmachinelearning.com/python-tensorflow-tutorial/ import tensorflow as tf fr
好了,所以我准备在Tensorflow中运行 tf.nn.softmax_cross_entropy_with_logits() 函数。 据我了解,“logit”应该是概率的张量,每个对应于某个像素的
tensorflow 服务构建依赖于大型 tensorflow ;但我已经成功构建了 tensorflow。所以我想用它。我做这些事情:我更改了 tensorflow 服务 WORKSPACE(org
Tensoflow 嵌入层 ( https://www.tensorflow.org/api_docs/python/tf/keras/layers/Embedding ) 易于使用, 并且有大量的文
我正在尝试使用非常大的数据集(比我的内存大得多)训练 Tensorflow 模型。 为了充分利用所有可用的训练数据,我正在考虑将它们分成几个小的“分片”,并一次在一个分片上进行训练。 经过一番研究,我
根据 Sutton 的书 - Reinforcement Learning: An Introduction,网络权重的更新方程为: 其中 et 是资格轨迹。 这类似于带有额外 et 的梯度下降更新。
如何根据条件选择执行图表的一部分? 我的网络有一部分只有在 feed_dict 中提供占位符值时才会执行.如果未提供该值,则采用备用路径。我该如何使用 tensorflow 来实现它? 以下是我的代码
我是一名优秀的程序员,十分优秀!