我正在测试给我的一些代码,并收到一条错误消息:
AttributeError: 'module' object has no attribute 'sub'
Run Code Online (Sandbox Code Playgroud)
所指的模块是TensorFlow。为了调查这个错误,我开始研究 TensorFlow 源代码并发现了一个函数“tensorflow.subtract”。将“sub”替换为“subtract”使错误消失。
但现在我仍然想知道为什么会出现这个错误。我可以想到两个原因:
任何人都可以就这里最有可能的情况提出建议吗?
我是张量流新手。我正在从文件中读取图像并使用 tf.image.decode_jpeg 对其进行解码,然后使用 matplotlib 绘制解码图像。但不知怎的,原始图像和解码图像是不同的。
filenames = ['/Users/darshak/TensorFlow/100.jpg', '/Users/darshak/TensorFlow/10.jpg']
filename_queue = tf.train.string_input_producer(filenames)
reader = tf.WholeFileReader()
filename, content = reader.read(filename_queue)
image = tf.image.decode_jpeg(content, channels=3)
image = tf.cast(image, tf.float32)
resized_image = tf.image.resize_images(image, [256, 256])
image_batch = tf.train.batch([resized_image], batch_size=9)
sess = tf.InteractiveSession()
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
plt.imshow(image.eval())
plt.show()
sess.close()
Run Code Online (Sandbox Code Playgroud) 当我尝试在自定义命名图中构造一个简单表达式时,出现了一个关于堆栈的奇怪错误。
下面的代码工作正常:
tf.reset_default_graph()
# The basic model
X = tf.placeholder(tf.float32, [None, MnistDim], "X")
W = tf.get_variable(
name="W",
shape=[MnistDim, DigitCount],
dtype=np.float32,
initializer=tf.zeros_initializer()
)
b = tf.get_variable(
name="b",
shape=[DigitCount],
dtype=np.float32,
initializer=tf.zeros_initializer()
)
a = tf.matmul(X, W, name="a") + b
y = tf.nn.softmax (a, name="y")
# The training elements
t = tf.placeholder (tf.float32, [None, 10], "t")
cross_entropy = tf.reduce_mean(-tf.reduce_sum(t * tf.log(y), reduction_indices=[1]))
# I know about tf.nn.softmax_cross_entropy_with_logits(a)
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
Run Code Online (Sandbox Code Playgroud)
但是,如果我通过添加以下内容将该代码放入自定义图表中:
mnist_train_graph = tf.Graph()
with mnist_train_graph.as_default():
tf.reset_default_graph()
# The basic model
X = …Run Code Online (Sandbox Code Playgroud) 我想通过向现有数据集添加随机噪声来将我用来动态训练张量流中的神经网络的现有数据集的大小加倍。因此,当我完成后,我将拥有所有现有示例以及添加了噪音的所有示例。我还想在转换它们时将它们交错,因此它们按以下顺序出现:示例 1 无噪声,示例 1 有噪声,示例 2 无噪声,示例 2 有噪声,等等。我正在努力实现这一点使用数据集 API。我尝试使用 unbatch 来完成此操作,如下所示:
def generate_permutations(features, labels):
return [
[features, labels],
[add_noise(features), labels]
]
dataset.map(generate_permutations).apply(tf.contrib.data.unbatch())
Run Code Online (Sandbox Code Playgroud)
但我收到一条错误消息说Shapes must be equal rank, but are 2 and 1. 我猜测张量流正在尝试从我返回的批次中生成张量,但是features和labels是不同的形状,所以这是行不通的。我可能可以通过制作两个数据集并将它们连接在一起来做到这一点,但我担心这会导致非常倾斜的训练,我在一半的时期内训练得很好,突然所有数据都在第二个时期进行了这种新的转换一半。在输入张量流之前,如何在不将这些转换写入磁盘的情况下即时完成此操作?
回溯(最近一次调用最后):文件“run_summarization.py”,第327行,在
tf.app.run()
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py”,第126行,在运行_sys.exit(main(argv))
文件“run_summarization.py”中,第306行,在主
batcher = Batcher(FLAGS.data_path, vocab, hps, single_pass=FLAGS.single_pass)
文件“/home/hdm/hdm/program/CNN/pointer-generator-master/batcher.py”中,第238行,在init
self._example_queue = Queue.Queue(self.BATCH_QUEUE_MAX * self._hps.batch_size)
TypeError中:不支持的操作数类型) 对于 *: 'int' 和 'Flag'
据我从张量流文档中了解到,地图用于基于函数 parse_function_wrapper 修改图像。
dataset = dataset.map(parse_function_wrapper,
num_parallel_calls=4)
dataset = dataset.batch(32)
Run Code Online (Sandbox Code Playgroud)
现在数据集将只有增强图像而没有原始图像。所以我的疑问是我们需要使用原始数据和增强数据来训练我们的模型。谁能告诉我如何用原始数据进行训练?
我的大部分代码都是基于这篇文章,我所问的问题在那里很明显,而且在我自己的测试中也是如此。它是一个具有 LSTM 层的顺序模型。
下面是对来自模型的真实数据的预测,该模型是使用一个时期的大约 20 个小数据集进行训练的。
这是另一个图,但这次模型使用更多数据训练了 10 个时期。
造成这种情况的原因是什么以及如何解决?另外,我发送的第一个链接在底部显示了相同的结果 - 1 epoch 效果很好,而 3500 epoch 则很糟糕。
此外,当我针对更高的数据计数但只有 1 个时期运行训练课程时,我得到了与第二个图相同的结果。
什么可能导致此问题?
我使用 gensim 库保存了我的文本向量,该库由一些负数组成。会影响训练吗?如果不是,那么为什么我在某些训练步骤之后首先获得判别器的 nan 损失值,然后再获得判别器和生成器的 nan 损失值?
使用 TFlite 文件并将其嵌入实际 Android 应用程序的分步说明是什么?作为参考,这是回归。输入将是图像,输出应该是数字。我已经看过 TensorFlow 文档,但他们没有解释如何从头开始。
我是 keras 新手,我想用 F1-score 作为指标来训练模型。
\n\n我遇到了两件事,一是我可以添加回调,二是使用内置的指标函数\n这里,它说指标函数将不会用于训练模型。那么,这是否意味着我可以metrics在编译模型时进行任何争论?\n具体来说,
model.compile(optimizer=\'rmsprop\',\n loss=\'binary_crossentropy\',\n metrics=[\'accuracy\'])\nRun Code Online (Sandbox Code Playgroud)\n\n在上述情况下,即使准确性作为指标传递,它也不会用于训练模型。
\n\n第二件事是使用此处定义的回调,
\n\nimport numpy as np\nfrom keras.callbacks import Callback\nfrom sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score\nclass Metrics(Callback):\ndef on_train_begin(self, logs={}):\n self.val_f1s = []\n self.val_recalls = []\n self.val_precisions = []\n\ndef on_epoch_end(self, epoch, logs={}):\n val_predict = (np.asarray(self.model.predict(self.model.validation_data[0]))).round()\n val_targ = self.model.validation_data[1]\n _val_f1 = f1_score(val_targ, val_predict)\n _val_recall = recall_score(val_targ, val_predict)\n _val_precision = precision_score(val_targ, val_predict)\n self.val_f1s.append(_val_f1)\n self.val_recalls.append(_val_recall)\n self.val_precisions.append(_val_precision)\n print \xe2\x80\x9c \xe2\x80\x94 val_f1: %f \xe2\x80\x94 val_precision: %f \xe2\x80\x94 val_recall %f\xe2\x80\x9d …Run Code Online (Sandbox Code Playgroud) tensorflow ×10
python ×7
keras ×2
generative-adversarial-network ×1
lstm ×1
matplotlib ×1
nlp ×1
python-2.7 ×1
python-3.x ×1