我正在训练一个面部表情(愤怒 vs 快乐)模型。最后一个密集输出层以前是 1,但是当我预测图像时,它的输出始终为 1,准确度为 64%。所以我将其更改为 2 以获取 2 个输出。但现在我收到这个错误::
Epoch 1/15
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-54-9c7272c38dcb> in <module>()
11 epochs=epochs,
12 validation_data = val_data_gen,
---> 13 validation_steps = validation_steps,
14
15 )
10 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
966 except Exception as e: # pylint:disable=broad-except
967 if hasattr(e, "ag_error_metadata"):
--> 968 raise e.ag_error_metadata.to_exception(e)
969 else:
970 raise
ValueError: in user code:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:571 train_function *
outputs = self.distribute_strategy.run(
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:951 run **
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2290 call_for_each_replica …Run Code Online (Sandbox Code Playgroud) 我正在尝试根据一个日期列删除数据帧的行; [Delivery Date]
我需要删除超过6个月但不等于'1970'年份的行.
我创建了2个变量:
from datetime import date, timedelta
sixmonthago = date.today() - timedelta(188)
import time
nineteen_seventy = time.strptime('01-01-70', '%d-%m-%y')
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用[Delivery Date]列来删除基于这两个变量的行.
有人能提供正确的解决方案吗?
我正在使用keras训练RNN,并希望了解验证准确度如何随数据集大小而变化.Keras val_acc在其历史对象中有一个名单,该列表在每个时期之后附加,具有相应的验证集准确性(链接到google组中的帖子).我想获得val_acc运行时期数的平均值,并根据相应的数据集大小进行绘制.
问题:如何检索val_acc列表中的元素并执行类似的操作numpy.mean(val_acc)?
编辑:正如@runDOSrun所说,得到val_accs 的意思是没有意义的.让我专注于进入决赛val_acc.
我尝试了@nemo的建议,但没有运气.这是我打印时得到的
model.fit(X_train, y_train, batch_size = 512, nb_epoch = 5, validation_split = 0.05).__dict__
输出:
{'model': <keras.models.Sequential object at 0x000000001F752A90>, 'params': {'verbose': 1, 'nb_epoch': 5, 'batch_size': 512, 'metrics': ['loss', 'val_loss'], 'nb_sample': 1710, 'do_validation': True}, 'epoch': [0, 1, 2, 3, 4], 'history': {'loss': [0.96936064512408959, 0.66933631673890948, 0.63404161288724303, 0.62268789783555867, 0.60833334699708819], 'val_loss': [0.84040999412536621, 0.75676006078720093, 0.73714292049407959, 0.71032363176345825, 0.71341043710708618]}}
Run Code Online (Sandbox Code Playgroud)
事实证明val_acc,我的历史词典中没有列表.
问题:如何val_acc在history字典中加入?
machine-learning neural-network cross-validation keras recurrent-neural-network
我的意见是:
input = ['(var1, )', '(var2,var3)']
Run Code Online (Sandbox Code Playgroud)
预期产出是:
output = [('var1', ), ('var2','var3')]
Run Code Online (Sandbox Code Playgroud)
迭代输入并在元组字符串上使用eval/ literal_eval是不可能的:
>>> eval('(var1, )')
>>> NameError: name 'var1' is not defined
Run Code Online (Sandbox Code Playgroud)
如何将项目转换为'(var1, )'元组,其中内部对象被视为字符串而不是变量?
有没有比编写解析器或使用正则表达式更简单的方法?
一些seaborn方法,比如JointPlot 在每次调用时创建新数据.这使得无法创建一个简单的动画,例如matplotlib迭代调用plt.cla()或plt.clf()允许更新图形内容而不必每次都关闭/打开窗口.
我目前看到的唯一解决方案是:
for t in range(iterations):
# .. update your data ..
if 'jp' in locals():
plt.close(jp.fig)
jp = sns.jointplot(x=data[0], y=data[1])
plt.pause(0.01)
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为我们在创建新窗口之前关闭了上一个窗口.但当然,这远非理想.
有没有更好的办法?可以某种方式直接在先前生成的Figure对象上完成绘图吗?或者有没有办法阻止这些方法在每次调用时生成新数据?
简单的问题,但我无法理解.
带is前缀的示例:
private boolean active;
public boolean isActive(){...};//getter
public boolean setActive(boolean b){...};//setter
Run Code Online (Sandbox Code Playgroud)
但我不明白如何用has前缀做setter
private boolean hasChildren;
public boolean hasChildren(){...};//getter
public boolean ?(boolean b){...}//setter
Run Code Online (Sandbox Code Playgroud) 尝试将数据结构中的值(如t = (("foo",),)变量)分配给变量,我发现以下方法有效:
((var,),) = t # or [[var]] = t
Run Code Online (Sandbox Code Playgroud)
我想知道它是如何运作的。Python 是否在左侧创建元组/列表?
对来源中相关部分的引用也将不胜感激。
我一直试图实现反向传播神经网络一段时间,我一次又一次地面临问题.到目前为止的进展是我的神经网络适用于XOR,AND和OR.
下图显示我的神经网络训练超过100000次迭代的XOR,它似乎收敛良好.为此,我有2个输入神经元和一个输出神经元,隐藏层有2个神经元[虽然1已经足够]

现在我正在向前推进训练相同的网络,将XY平面中的坐标分成两个类,其中2个输入神经元和1个输出神经元的结构相同,单个隐藏层有两个神经元:

对于接下来的训练我只训练了两个班级,但是有2个输出神经元,并保持结构的其余部分相同,这段时间需要很长时间才能收敛但是确实如此.
但现在我增加到三个班级; A类将是100而B类将是010而C类将是001但现在当我训练它时它永远不会收敛并给出以下数据如下所示:

它似乎永远不会收敛.我已经观察到这种模式,如果我增加输出层中的神经元数量,错误率会像任何东西一样增加?我可以指引我到哪里出错吗?
我刚刚开始了一个机器学习课,我们去了Perceptrons.对于家庭作业,我们应该:"选择适当的训练和测试两个维度的数据集(平面).使用10个数据点进行训练,5个进行测试."然后我们应该编写一个程序,使用感知器算法和输出:
我已经多次阅读了本书的第一章,但我仍然无法完全理解感知器.
我知道你改变了权重,如果一个点被错误分类,直到没有错误分类,我想我无法理解的是
如果没有我的书提供好的例子,我真的很难知道如何构成其中的一个.你可以告诉我,我很失落,任何帮助都会非常感激.
algorithm artificial-intelligence machine-learning perceptron neural-network
我正在尝试在python中创建一个程序,将十进制数转换为十六进制数.当我运行程序时,它给了我正确的转换,但它在无限循环上运行.我不确定无限循环在哪里发生.这是我的代码:
def remainderToHex(remainder):
if remainder <= 9:
remainder = str (remainder)
elif remainder == 10:
remainder = "A"
elif remainder == 11:
remainder = "B"
elif remainder == 12:
remainder = "C"
elif remainder == 13:
remainder = "D"
elif remainder == 14:
remainder = "E"
elif remainder == 15:
remainder = "F"
return remainder
def decToHex(decNum):
hexNum = ""
quotient = decNum
divNum=16
if quotient == 0:
hexNum = 0
while quotient > 0:
remainder = quotient % divNum …Run Code Online (Sandbox Code Playgroud) python ×5
java ×2
keras ×2
algorithm ×1
cnn ×1
date ×1
datetime ×1
matplotlib ×1
pandas ×1
perceptron ×1
seaborn ×1
tensorflow ×1